We are having a problem getting a BDA filter graph to work when created by a DLL. I will describe the situation below- would greatly appreciate if you have any advice.
This related to building the filter graph for a DVB-S tuner receiver card. The filter graph is supposed to do the following:
Tune the receiver card to get a DVB-S signal from a satellite source, demultiplex the data PIDs contained in the MPEG stream, reassemble the IP data packets from the MPE sections and send the IP packets to the network interface.
Using GraphEdit, we can build a local filter graph which is as follows:
Microsoft DVBS Network Provider --> Receiver card BDA Tuner Filter --> Receiver card BDA Capture Filter --> Directshow MPEG-2 Demultiplexer --> BDA MPEG-2 Transport Information Filter (pin 1), BDA MPEG-2 Sections and Tables (pin 5), BDA MPE filter (pin4) --> BDA IP Sink filter
Using this filter graph, we can tune to a valid signal in the lab, map the data PIDs for the Demux, and see the IP packets output at the network interface using Wireshark.
[*Cannot upload* - Attached ZIP file, "Prototype Working Filter Graph.zip" shows screenshots of the working filter graph and also the property pages of the DVBS Network Provider filter and the MPEG-2 Demux filter.]
The DLL we have is supposed to build the graph as described above. The configuration parameters for the signal ("Tuning Space" in DVBS Network Provider filter) and the data PIDs are sent from the higher level application using a SetData() function. For testing, we use
a Test_App.cpp to load the DLL and configure it. When we check the filter graph created by the DLL in GraphEdit (using "Connect to Remote"), we don't see (i) most property pages for the DVBS Network Provider filter and (ii) "Output PIN" tab or any PID mappins in the Demux filter. Also, there is no data output at the network interface as seen by Wireshark.
[*Cannot upload* - Attached ZIP file, "BDA DLL Filter Graph.zip", shows the screenshots for the DLL filter graph that is seen by doing a remote connect in GraphEdit.]
Any idea why the data flows when the graph is created locally in GraphEdit but not when the graph is loaded by the DLL?
Am also attaching the source code of the Test_App.cpp that we use as a dummy higher-level to load the DLL and pass parameters to it. Also, a section of the DLL source code - this relates to setting the signal parameters for the tuner.
Would greatly appreciate any advice. Thanks in advance.