Discussion:
Problem with BDA capture driver
(too old to reply)
p***@yahoo.com
2007-04-15 20:56:19 UTC
Permalink
Hello,

I am writing a BDA driver for DVB-T card. For start I have taken a BDA
DDK samples (capture and tuner) and modified them to suite my needs.
To test how the capture filter works with the rest of the graph
(Demux, decoders and renderers) I have made a small stub within
capture filter. This stub reads 2 MB of data from the file, which
contains dump of transport stream. Then, in the Process routine of
output pin of capture filter, I use KsPinGetLeadingEdgeStreamPointer
to get the pointer to the first available streaming frame, fill it
(Leading->StreamHeader->Data) with data from the buffer, set Leading-
StreamHeader->DataUsed to the actual amount of copied data and unlock
the pointer (KsStreamPointerUnlock(Leading, TRUE)).
For testing purposes I have created a graph in GraphEdit: Network
Provider -> Tuner->Capture->Demux->Audio/Video decoders->Audio/Video
renderers. So far so good. The graph can be fully connected in
graphedit and started. However it does not produce any audio or video.
In the WinDBG I can trace that buffer in the stub is filled with
correct data, I see that Process function of output pin is called,
that state of the output pin is Run, but no video/audio is produced as
a result of the running graph. Can someone help me with this problem?
Can I check somehow that data from my capture filter is actually
transferred to Demux filter?
The functionality of tuner filter is completely stubbed at the moment
- it returns OK on almost all requests. Can it be the source of my
problems?
Thanks in advance,
Pavlo
Alex Faucher
2007-04-16 16:12:01 UTC
Permalink
I'm seeing exactly the same result as you and I have all of my functions
filled in. It would seem there is a magical property somewhere that the
samples don't set that indicates they should work. If you find a solution or
receive any helpful information please let me know at ***@cetoncorp.com
It would be greatly appreciated as I have not received a response to any of
my queries to Microsoft regarding the matter.

I've connected up the file writer and it does create a file but the length
stays at zero bytes.

Good luck,
Alex
Post by p***@yahoo.com
Hello,
I am writing a BDA driver for DVB-T card. For start I have taken a BDA
DDK samples (capture and tuner) and modified them to suite my needs.
To test how the capture filter works with the rest of the graph
(Demux, decoders and renderers) I have made a small stub within
capture filter. This stub reads 2 MB of data from the file, which
contains dump of transport stream. Then, in the Process routine of
output pin of capture filter, I use KsPinGetLeadingEdgeStreamPointer
to get the pointer to the first available streaming frame, fill it
(Leading->StreamHeader->Data) with data from the buffer, set Leading-
StreamHeader->DataUsed to the actual amount of copied data and unlock
the pointer (KsStreamPointerUnlock(Leading, TRUE)).
For testing purposes I have created a graph in GraphEdit: Network
Provider -> Tuner->Capture->Demux->Audio/Video decoders->Audio/Video
renderers. So far so good. The graph can be fully connected in
graphedit and started. However it does not produce any audio or video.
In the WinDBG I can trace that buffer in the stub is filled with
correct data, I see that Process function of output pin is called,
that state of the output pin is Run, but no video/audio is produced as
a result of the running graph. Can someone help me with this problem?
Can I check somehow that data from my capture filter is actually
transferred to Demux filter?
The functionality of tuner filter is completely stubbed at the moment
- it returns OK on almost all requests. Can it be the source of my
problems?
Thanks in advance,
Pavlo
p***@yahoo.com
2007-04-16 21:42:22 UTC
Permalink
I think I know what the problem is. (Disclaimer: everything said
further is not yet empirically proved).
The issue with not-working graph is that MPEG-2 Demultiplexer is not
configured. What happens is that Demux's pins hould be assosiated with
particular PIDs from the stream for working video and audio outputs.
In the fully working application (e.g. MCE, DVB-T receiver app etc.),
application itself does it with the help of MPEG-2 TIF filter. When
graph is running under GraphEdit, Demux must be configured manually.
It is suggested on the Internet that this can be done through Demux's
property page. However when I click "Properties" on the Demux filter I
get an error message that given property page cannot be displayed and
I do not know why. I wonder if anyone has suggestions on how to test
the graph without having fully working application.
It is now late here, so I will try test my idea tomorrow. Can also
anyone confirm that the line of thinking is correct?
More information can be also found in MSDN under "Configuring the
Demux Output Pins"
Alex Faucher
2007-04-16 21:56:00 UTC
Permalink
Run regsrv32 (or regsvr32?) propage.dll in the graphedt directory. It
enables property dialogs.

I will trying your method shortly however I have had the same problem with
the samples in media center which I assume is doing the right thing.
Although now that I think about it, my pids shouldn't be what is supposed to
be on the wire.

Thanks,
Keep us posted
Alex
Post by p***@yahoo.com
I think I know what the problem is. (Disclaimer: everything said
further is not yet empirically proved).
The issue with not-working graph is that MPEG-2 Demultiplexer is not
configured. What happens is that Demux's pins hould be assosiated with
particular PIDs from the stream for working video and audio outputs.
In the fully working application (e.g. MCE, DVB-T receiver app etc.),
application itself does it with the help of MPEG-2 TIF filter. When
graph is running under GraphEdit, Demux must be configured manually.
It is suggested on the Internet that this can be done through Demux's
property page. However when I click "Properties" on the Demux filter I
get an error message that given property page cannot be displayed and
I do not know why. I wonder if anyone has suggestions on how to test
the graph without having fully working application.
It is now late here, so I will try test my idea tomorrow. Can also
anyone confirm that the line of thinking is correct?
More information can be also found in MSDN under "Configuring the
Demux Output Pins"
Alex Faucher
2007-04-17 00:14:00 UTC
Permalink
The doc you refer to states

In pull mode, the demux automatically creates output pins for the audio and
video streams in the file, and maps the stream IDs to the pins.

In push mode, the output pins must be configured by the application or by
another filter. For digital television sources using the Broadcast Driver
Architecture (BDA), the network provider filter works with the TIF filter to
configure the demux. The application does not have to do anything. In other
scenarios, the application must configure the output pins.

These samples are BDA and graphedit constructs a graph with both the Network
Provider and the TIF filter. I tried it myself and I watched the Demux
autoroute the pids in the stream to the output. I'm currently looking into
if these are the correct pids however.
Post by p***@yahoo.com
I think I know what the problem is. (Disclaimer: everything said
further is not yet empirically proved).
The issue with not-working graph is that MPEG-2 Demultiplexer is not
configured. What happens is that Demux's pins hould be assosiated with
particular PIDs from the stream for working video and audio outputs.
In the fully working application (e.g. MCE, DVB-T receiver app etc.),
application itself does it with the help of MPEG-2 TIF filter. When
graph is running under GraphEdit, Demux must be configured manually.
It is suggested on the Internet that this can be done through Demux's
property page. However when I click "Properties" on the Demux filter I
get an error message that given property page cannot be displayed and
I do not know why. I wonder if anyone has suggestions on how to test
the graph without having fully working application.
It is now late here, so I will try test my idea tomorrow. Can also
anyone confirm that the line of thinking is correct?
More information can be also found in MSDN under "Configuring the
Demux Output Pins"
p***@yahoo.com
2007-04-18 14:59:21 UTC
Permalink
It appeared that the file with TS dump contains bad stream (non-
confirming to TS spec). I will generate a new one and will check once
again whether my driver works.

Continue reading on narkive:
Loading...