Thanks guys.
First, i need to correct my posting above. The only problematic Drivers are the Twinhan. The Spectrum Drivers works very well with my NP replacement. I don't know if the Spectrum Drivers already create the Output Pin and Topology on it´s own, but on my KWorld the Output Pin is not created and a simple IBDA_Topolgy.CreatePin is enough to Start the Device.
QUOTE
Before I start i'll just point out is that i may not know what i'm talking about. I'm just reading the DirectX docs and trying to figure it out from educated guesses.
Isn't that what we're all doing?

QUOTE
Isn't IBDA_Topology::GetPinTypes what is supposed to be used rather than guessing the types of pin id's?
Right, i was just using the Values i have seen in the GenericTuner Sample in the DDK.
CODE
//
// Topology Constants
//
typedef enum {
PIN_TYPE_ANTENNA = 0,
PIN_TYPE_TRANSPORT
} FilterPinTypes;
typedef enum {
INITIAL_ANNTENNA_PIN_ID = 0
} InitialPinIDs;
QUOTE
Does data normally flow between the tuner and capture filters? I didn't think it did. I thought the only communication between the tuner and capture filters was through interface calls. I could be entirely wrong though.
You are right, but I wasn't checking the Data Flow on the Output Pin of the Tuner. I have connected a PinTee between Receiver and Demux, with an additional File (Dump) Writer Filter and the Filesize is always 0 with the Twinhan Drivers.
QUOTE
Perhaps you need to use something like IBDA_Topology::CreateTopology after creating the output pin?
That´s what i have tried.
CODE
if not Assigned(GetOutPin(FTuner, 0)) then
begin
with (FTuner as IBDA_Topology) do
begin
hr := CreatePin(1, id);
hr := CreateTopology(0, id);
end;
end;
'id' after Create is 1. Even if i create multiple Output Pins, each ID is 1 and every hr is S_OK. I tried to create (just for fun) some additional Input Pins. Creating works, but CreateTopology fails and no Data is received on the demux.
QUOTE
I think you are on the right track, ie you need a dummy filter that will setup a default Node Topology for the tuner filter (and also for the Demodulator filter if it's a separate filter) Unfortunately I think you need to enum and create the nodes from input to output based on the tuningspace and modulation parameters etc. Not just a hardcoded pin creation ~~~
That´s exactly what i want to do, but it´s really hard to work things out and that each Driver is acting different doesn't help at all
QUOTE
Spectrum may be able to help us understand this better ~ Perhaps he could compile for us a set of drivers with ::DebugOutput's for all the interface calls.
AFAIK the KWorld / VStream BDA drivers are still not compliant and I would not be using them for this work... ie they are still using the NIM tuning module outside of the BDA Architecture.
Yeah that might help. As i said before, i don't know if the Spectrum Drivers automagically create the Output Pin and Topology on it´s own. Maybe it will be needed to rewrite that Driver, so we can create the Pin and Topology on our own.
Can i use other (maybe Spectrum) Drivers for the KWorld Card ?
QUOTE
What i really meant to ask was if DCoder is going to implement ITuner on his dummy filter or just leave it up to the application or another filter (such as his new TIF) to tune directly.
Actually, i was only going to add Code to start the Dataflow. The tuning using the IBDA_XXX Interfaces is already working very well.
QUOTE
I did look at this a couple of months ago. IIRC his graph building code calls the BDA node interfaces directly, its all here
http://cvs.dsp-worx.de/index.cgi/dcdvbsource/Source/Filter/and specifically
http://cvs.dsp-worx.de/index.cgi/dcdvbsour...cannerGraph.pasI should mention here that the ChannelScan is still using the MS NP and TIF. That will be changed later when i am able to completely replace it. My main DirectShow Source Filter is not using the MS NP and TIF anymore.
QUOTE
One thing I found helpful when experimenting with this was to put a null renderer filter in place of the TIF but I imagine your TIF replacement achieves much the same thing ~
I tried that a while ago, but without the TIF in the Graph the MS NP crashed when closing the App. It seems the NP is calling a method on an Interface without checking if the interface is assigned...
My TIF replacement is not really working like the MS TIF. The whole mappings on the Demux Pins are done by the saved ChannelFiles from the ChannelScan.
http://cvs.dsp-worx.de/index.cgi/dcdvbsour...raphBuilder.pas in TDVBGraphBuilder.TuneToChannelInternal. The only mapping i do within my TIF replacement is the mapping on Pin 1 of the demux to map the PID for EPG/NIT by parsing the PAT.
QUOTE
So if I had to guess a replacement NP should
1/ Create a default TuningSpace of the correct type DVB/C/S/T, ATSC etc at creation
2/ Actively implement get and set tuning space, as I believe that CreateTopology() will retrieve and use this information...
3/ Respond to a RegisterDeviceFilter() (Note to self, also IBDA_PinControl::RegistrationContext()) from a tuner or demod filter being added to the graph by creating an input and output pin and calling CreateTopology on them.
As i said before, it´s not my Goal to write a full Network Provider. I just want the Device Filters to start the delivering. My tuning works very well for DVB-T and DVB-S. DVB-C is already implemented, but untested, so i don't really see the need to implement the whole TuneRequest Interfaces.