Creates a sample stream from an audio CD track, optionally providing a callback function to receive sub-channel data and/or C2 error info.
Namespace: Un4seen.Bass.AddOn.Cd
Assembly: Bass.Net (in Bass.Net.dll) Version: 2.4.17.5
Syntax
[DllImportAttribute("basscd")] public static int BASS_CD_StreamCreateEx( int drive, int track, BASSFlag flags, CDDATAPROC proc, IntPtr user )
Parameters
- drive
- Type: SystemInt32
The drive... 0 = the first drive. - track
- Type: SystemInt32
The track... 0 = the first track, BASS_CD_TRACK_PREGAP = 1st track pregap (not all drives support reading of the 1st track pregap). - flags
- Type: Un4seen.BassBASSFlag
Any combination of these flags (see BASSFlag):BASS_SAMPLE_FLOAT Use 32-bit floating-point sample data. WDM drivers or the BASS_STREAM_DECODE flag are required to use this flag. See Floating-point channels for more info. BASS_SAMPLE_SOFTWARE Force the stream to not use hardware mixing. BASS_SAMPLE_LOOP Loop the file. This flag can be toggled at any time using BASS_ChannelFlags(Int32, BASSFlag, BASSFlag). BASS_SAMPLE_FX Requires DirectX 8 or above: Enable the old implementation of DirectX 8 effects. See the DX8 effect implementations section for details. Use BASS_ChannelSetFX(Int32, BASSFXType, Int32) to add effects to the stream. BASS_STREAM_AUTOFREE Automatically free the stream's resources when it has reached the end, or when BASS_ChannelStop(Int32) (or BASS_Stop) is called. BASS_STREAM_DECODE Decode the sample data, without outputting it. Use BASS_ChannelGetData(Int32, IntPtr, Int32) to retrieve decoded sample data. The BASS_SAMPLE_SOFTWARE, BASS_SAMPLE_3D, BASS_SAMPLE_FX, BASS_STREAM_AUTOFREE and SPEAKER flags can not be used together with this flag. BASS_SPEAKER_xxx Speaker assignment flags. BASS_CD_SUBCHANNEL Read sub-channel data. 96 bytes of de-interleaved sub-channel data will be returned after each 2352 bytes of audio. This flag can not be used with the BASS_SAMPLE_FLOAT flag, and is ignored if the BASS_STREAM_DECODE flag is not used. BASS_CD_SUBCHANNEL_NOHW Read sub-channel data, without using any hardware de-interleaving. This is identical to the BASS_CD_SUBCHANNEL flag, except that the de-interleaving is always performed by BASSCD even if the drive is apparently capable of de-interleaving itself. BASS_CD_C2ERRORS Include C2 error info. 296 bytes of C2 error info is inserted after each 2352 bytes of audio data (and optionally 96 bytes of sub-channel data) or delivered to the provided CDDATAPROC. The first 294 bytes contain the C2 error bits (one bit for each byte of audio), followed by a byte containing the logical "OR" of all 294 bytes, which can be used to quickly check if there were any C2 errors. The final byte is just padding. This flag cannot be used without the BASS_STREAM_DECODE flag or with the BASS_SAMPLE_FLOAT flag, unless a CDDATAPROC is provided to receive the C2 error info. - proc
- Type: Un4seen.Bass.AddOn.CdCDDATAPROC
A callback function to receive sub-channel data and C2 error info... = no callback. If a callback function is provided, sub-channel data and C2 error info will be delivered to it rather than being inserted amongst the sample data. - user
- Type: SystemIntPtr
User instance data to pass to the callback function.
Return Value
Type: Int32If successful, the new stream's handle is returned, else 0 is returned. Use BASS_ErrorGetCode to get the error code.
Remarks
ERROR CODE | Description |
---|---|
BASS_ERROR_INIT | BASS_Init(Int32, Int32, BASSInit, IntPtr, IntPtr) has not been successfully called. |
BASS_ERROR_DEVICE | drive is invalid. |
BASS_ERROR_ALREADY | A stream using this drive already exists. |
BASS_ERROR_ILLPARAM | The BASS_CD_SUBCHANNEL and BASS_CD_C2ERRORS flags cannot be used without the BASS_STREAM_DECODE flag or with the BASS_SAMPLE_FLOAT flag, unless a CDDATAPROC is provided. |
BASS_ERROR_NOCD | There's no CD in the drive. |
BASS_ERROR_CDTRACK | track is invalid. |
BASS_ERROR_NOTAUDIO | The track is not an audio track. |
BASS_ERROR_NOTAVAIL | Reading sub-channel data and/or C2 error info is not supported by the drive, or a read offset is in effect, in which case a CDDATAPROC must be provided to receive sub-channel data or C2 error info. |
BASS_ERROR_FORMAT | The sample format is not supported by the device/drivers. If using the BASS_SAMPLE_FLOAT flag, it could be that floating-point channels are not supported (ie. no WDM drivers). |
BASS_ERROR_SPEAKER | The device/drivers do not support the requested speaker(s), or you're attempting to assign a stereo stream to a mono speaker. |
BASS_ERROR_MEM | There is insufficient memory. |
BASS_ERROR_UNKNOWN | Some other mystery problem! |
See Also