S
ShawnYang1990
Guest
Dear all,
I am developing an audio render using AVStream.
It is now correctly displayed on the Playback Device.
Then I used Graphedit to test.
When the render filter in the "Audio Renderers" category is selected, the DispatchProcess of the pin is not called.
I suspect that the pin did not receive the data, so the DispatchProcess was not called.
But if I use "WDM Streaming Rendering Device" then everything works fine.
I have confirmed that the state of the pin is already "KSSTATE_RUN".
Please help me solve this problem, thank you.
Here is the pin DESCRIPTOR for this driver:
static
const
KSPIN_DESCRIPTOR_EX
ksCaptureFilterPinDescriptors[] = {
{ //Audio Input Pin
&ksCapturePinDispatch, // Dispatch
NULL, // AutomationTable
{ // PinDescriptor
DEFINE_KSPIN_DEFAULT_INTERFACES, // Interfaces
DEFINE_KSPIN_DEFAULT_MEDIUMS, // Mediums
SIZEOF_ARRAY(ksAudioPinDataRanges), // Range Count
ksAudioPinDataRanges, // Ranges
KSPIN_DATAFLOW_IN, // Dataflow
KSPIN_COMMUNICATION_SINK, // Communication (both source and sink)
&KSCATEGORY_AUDIO, // Category
NULL, // Name
0 // Reserved
},
KSPIN_FLAG_FIXED_FORMAT | KSPIN_FLAG_RENDERER | KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY, // Flags
1, // Instances Possible
0, // Instances Necessary
&ksAudioPinAllocatorFraming, // Allocator Framing
reinterpret_cast<PFNKSINTERSECTHANDLEREX>(CapturePin::IntersectHandler)
},
{ // Audio Output Pin
NULL, // Dispatch
NULL, // AutomationTable
{ // PinDescriptor
DEFINE_KSPIN_DEFAULT_INTERFACES, // Interfaces
DEFINE_KSPIN_DEFAULT_MEDIUMS, // Mediums
SIZEOF_ARRAY(ksPinDataRanges), // Range Count
ksPinDataRanges, // Ranges
KSPIN_DATAFLOW_OUT, // Dataflow
KSPIN_COMMUNICATION_NONE, // Communication
&KSNODETYPE_LINE_CONNECTOR, // Category
NULL, // Name
0 // Reserved
},
KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT, // Flags
1, // Instances Possible
0, // Instances Necessary
NULL, // Allocator Framing
NULL // IntersectHandler
}
};
Continue reading...
I am developing an audio render using AVStream.
It is now correctly displayed on the Playback Device.
Then I used Graphedit to test.
When the render filter in the "Audio Renderers" category is selected, the DispatchProcess of the pin is not called.
I suspect that the pin did not receive the data, so the DispatchProcess was not called.
But if I use "WDM Streaming Rendering Device" then everything works fine.
I have confirmed that the state of the pin is already "KSSTATE_RUN".
Please help me solve this problem, thank you.
Here is the pin DESCRIPTOR for this driver:
static
const
KSPIN_DESCRIPTOR_EX
ksCaptureFilterPinDescriptors[] = {
{ //Audio Input Pin
&ksCapturePinDispatch, // Dispatch
NULL, // AutomationTable
{ // PinDescriptor
DEFINE_KSPIN_DEFAULT_INTERFACES, // Interfaces
DEFINE_KSPIN_DEFAULT_MEDIUMS, // Mediums
SIZEOF_ARRAY(ksAudioPinDataRanges), // Range Count
ksAudioPinDataRanges, // Ranges
KSPIN_DATAFLOW_IN, // Dataflow
KSPIN_COMMUNICATION_SINK, // Communication (both source and sink)
&KSCATEGORY_AUDIO, // Category
NULL, // Name
0 // Reserved
},
KSPIN_FLAG_FIXED_FORMAT | KSPIN_FLAG_RENDERER | KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY, // Flags
1, // Instances Possible
0, // Instances Necessary
&ksAudioPinAllocatorFraming, // Allocator Framing
reinterpret_cast<PFNKSINTERSECTHANDLEREX>(CapturePin::IntersectHandler)
},
{ // Audio Output Pin
NULL, // Dispatch
NULL, // AutomationTable
{ // PinDescriptor
DEFINE_KSPIN_DEFAULT_INTERFACES, // Interfaces
DEFINE_KSPIN_DEFAULT_MEDIUMS, // Mediums
SIZEOF_ARRAY(ksPinDataRanges), // Range Count
ksPinDataRanges, // Ranges
KSPIN_DATAFLOW_OUT, // Dataflow
KSPIN_COMMUNICATION_NONE, // Communication
&KSNODETYPE_LINE_CONNECTOR, // Category
NULL, // Name
0 // Reserved
},
KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT, // Flags
1, // Instances Possible
0, // Instances Necessary
NULL, // Allocator Framing
NULL // IntersectHandler
}
};
Continue reading...