Managing Audio Data Blocks
Unless the audio data is small enough to be contained in a single data block,
applications must continually supply the device driver with data blocks until
playback or recording is complete. This is true for waveform input and output,
and for MIDI system-exclusive input messages. Regular MIDI channel messages
don't require data blocks for input or output.
Even if a single data block is used, applications must be able to determine
when a device driver is finished with the data block so the application can free
the memory associated with the data block and header structure. There are three
ways to determine when a device driver is finished with a data block:
- Specify a window to receive a message sent by the driver when it is finished
with a data block.
- Specify a callback function to receive a message sent by the driver when it is
finished with a data block.
- Poll a bit in the dwFlags member of the WAVEHDR or MIDIHDR data structure sent with each data block.
If an application doesn't get a data block to the device driver when needed,
there can be an audible gap in playback or a loss of incoming recorded
information. Use a double-buffering scheme to stay at least one data block ahead of the
device driver.
Note To get time-stamped MIDI input data, you must use a callback function.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database