/***************************************************************************** * CKsPin::HasDataRangeWithSpecifier() ***************************************************************************** *//*! * @brief */ BOOL CKsPin:: HasDataRangeWithSpecifier ( IN REFGUID FormatSpecifier ) { BOOL Found = FALSE; KSDATARANGE * DataRange = m_PinDescriptor.DataRanges;; // Loop Through the DataRanges for(ULONG i = 0; i < m_PinDescriptor.DataRangeCount; i++) { // Check for a matching Specifier if (IsEqualGUID(DataRange->Specifier, FormatSpecifier)) { // Found our matching Pin! Found = TRUE; break; } // Advance to the next datarange. DataRange = PKSDATARANGE(PUCHAR(DataRange) + DataRange->FormatSize); } return Found; }
{STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO)}, {STATICGUIDOF(KSDATAFORMAT_SUBTYPE_WMA_SPDIF)}, {STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)} } }, MAX_CHANNELS_WMA, MIN_BITS_PER_SAMPLE_WMA, MAX_BITS_PER_SAMPLE_WMA, MAX_SAMPLE_RATE_WMA, MAX_SAMPLE_RATE_WMA } }; static PKSDATARANGE WavePinDataRangePointersPCMStream[] = { PKSDATARANGE(&WavePinDataRangesPCMStream[0]) }; static PKSDATARANGE WavePinDataRangePointersAC3Stream[] = { PKSDATARANGE(&WavePinDataRangesAC3Stream[0]), PKSDATARANGE(&WavePinDataRangesAC3Stream[1]), PKSDATARANGE(&WavePinDataRangesAC3Stream[2]), PKSDATARANGE(&WavePinDataRangesAC3Stream[3]), }; static KSDATARANGE WavePinDataRangesPCMBridge[] = { {
sizeof(KSDATARANGE_AUDIO), 0, 6, 0, STATIC_KSDATAFORMAT_TYPE_AUDIO, STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM), STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) }, 2, // channels 16, // min. bits per sample 24, // max. bits per sample 44100, // min. sample rate 48000 // max. sample rate }; const PKSDATARANGE gPinDataFormatRanges[] = { PKSDATARANGE(&gPinDataFormatRange) }; const KSPIN_DISPATCH gPinDispatch = { CPin::DispatchCreate, // Pin Create NULL, // Pin Close NULL, // Pin Process NULL, // Pin Reset CPin::DispatchSetFormat, // Pin Set Data Format CPin::DispatchSetState, // Pin Set Device State NULL, // Pin Connect NULL, // Pin Disconnect NULL, // Clock Dispatch NULL // Allocator Dispatch };