home *** CD-ROM | disk | FTP | other *** search
/ Audio 4.94 - Over 11,000 Files / audio-11000.iso / msdos / sndbords / proaudio / sdk_ex / sdk_ex.arj / SDK_EX3.C < prev    next >
C/C++ Source or Header  |  1993-10-17  |  2KB  |  84 lines

  1. /*
  2.  *  Program: SDK_EX3.C
  3.  *   Author: Philip VanBaren
  4.  *  Purpose: This program demonstrates how to use the Media Vision SDK routines
  5.  *           to do input a single block of data.
  6.  */
  7.  
  8. #include <math.h>
  9. #include <stdio.h>
  10. #include <conio.h>
  11.  
  12. #include <pcmio.h>
  13.  
  14. extern int DMARunning;     /* SDK flag that indicates when DMA has been started */
  15.  
  16. #define IRQ -1             /* -1 means use the default value */
  17. #define DMA -1             /* -1 means use the default value */
  18. #define DMASize 16         /* 16k DMA buffer */
  19. #define DMADivisions 4     /* 4 divisions in this buffer */
  20.  
  21. #define SamplingRate 22050
  22. #define StereoFlag 0       /* If this flag is 1, data is interleaved left/right */
  23. #define CompressionFlag 0
  24. #define SampleSize 16      /* Size of samples, 8 or 16 bits */
  25.  
  26. /*
  27.  *  Large buffers are allowed (length is a long integer), but will need to
  28.  *  be allocated using farmalloc.  For buffers in static memory, we can't
  29.  *  go any higher than 64k (minus whatever is used by other data).
  30.  */
  31. #define BUF_LEN 10000
  32.  
  33. int out_buf[BUF_LEN];
  34.  
  35. int Done=0;
  36.  
  37. /*
  38.  *  This routine is called when the input buffer has been filled.
  39.  */
  40. void far callback(void)
  41. {
  42.    Done=1;
  43. }
  44.  
  45. void main(void)
  46. {
  47.    /*
  48.     *  Initialize ProAudio stuff
  49.     */
  50.    if(OpenPCMBuffering(DMA,IRQ,DMASize,DMADivisions)!=0)
  51.       puts("Error trying to open PCM buffering.");
  52.    else if(PCMState(SamplingRate,StereoFlag,CompressionFlag,SampleSize)!=0)
  53.       puts("Error setting sample rate.");
  54.    else
  55.    {
  56.       if(RecordThisBlock((char *)out_buf,(long)BUF_LEN*2,callback)==0)
  57.       {
  58.          ClosePCMBuffering();
  59.          puts("Error recording block.");
  60.       }
  61.       else
  62.       {
  63.          /*
  64.           *  Wait for the callback routine to be called (which means record
  65.           *  is complete.)
  66.           */
  67.          while(!kbhit() && !Done);
  68.       }
  69.    }
  70.    /*
  71.     *  You MUST call this function before ending the program, else things won't
  72.     *  work right the next time you try to run the program.  This is critical to
  73.     *  remember when debugging the program, because in debugging you often quit the
  74.     *  program before it runs to completion.  The only way I know of to recover
  75.     *  if this function is NOT called is to reboot the computer!
  76.     */
  77.    ClosePCMBuffering();
  78.  
  79.    /*
  80.     *  You can process the data here
  81.     */
  82. }
  83.  
  84.