VC components. Documentation

Subscribe to RSS news feed

VC components documentation is now available as online or offline version.
Please make your choice:

Note: if you have .CHM file content blocked, here is how to fix it.

Internal buffers and real-time latency

All VC componens (like waveIn, codec and waveOut) are performing audio stream processing only with blocks of data of fixed size, also called chunks. Chunk is the minimal amount of data which can be handled at one time.

By default chunk size is set to 1/50 second of audio data (1/49 for 11025 Hz sampling rate). For example, if your application includes one input device, two codecs and one output device, you should expect the minimal latency of 1/50 + 2/50 + 1/50 = 2/25 sec.


Most VC componens usually spawns own thread to operate. Standard VCL classes and components included in Delphi/C++Builder are designed to be working in one main process thread only. Therefore you should avoid calling standard VCL routines and methods of standard VCL components from the events assigned to VC components, such as onDataAvailable(), onDataDSP() and others.

CPU window popup

Most likely this problem is caused by Voxware Codec. For some reason, when querying this codec for details (acmGetDriverDetails), it generates an int 3 exception, which causes Delphi IDE debugger to stop. When not running under debugger, this exception is silently ignored.

To prevent this window to popup in IDE you can temporary disable this codec. Follow the steps below to do so (Windows 2000/XP):

  • Press Start - Settings - Control Panel - Sounds and Multimedia
  • Hardware tab - Audio Codecs - Properties
  • Properties tab - Voxware Compression Toolkit - Properties
  • Select the option (*) Do not use this audio codec
  • Press OK to confirm changes.

After that you should be able to debug your applications as normal. If you need this codec for your work, you can enable it back again after debugging is done.