Help - Search - Members - Calendar
Full Version: Programming to the Microsoft TV Technologies interface
DVB Owners Discussion Forum - dvbowners.com > Technical & Development Forums > BDA Driver Development
Pages: 1, 2, 3
null_pointer
QUOTE
does the tune request go to the video control before going to the network provider?


I am not using the Video Control, the sample app does not use the video control.

The Video Control works but is restrictive with what you can do, for creating a Web Scheduler plugin DLL I need to manipulate the FilterGraph at the filter level and sometimes at the pin level so can not use the Video Control.

When using the Video control it is the video control at does all the work, it put the tune request etc to the network provider for you.
bionicdonkey
QUOTE
QUOTE
does the tune request go to the video control before going to the network provider?


I am not using the Video Control, the sample app does not use the video control.

The Video Control works but is restrictive with what you can do, for creating a Web Scheduler plugin DLL I need to manipulate the FilterGraph at the filter level and sometimes at the pin level so can not use the Video Control.

When using the Video control it is the video control at does all the work, it put the tune request etc to the network provider for you.


Ok...Thanks.

Regards,
Josh
JoeyBloggs
Well then, I've manged to install two sets of BDA filters and they appear to be installed and running fine.

I can insert, tune request and render one or two graph's in GraphEdit. The graphs look plausible. Tuning seems ~~ to work and reports signal strengths ranging from 58 to 80 for different channels (exactly same system works with std drivers).

At best I get a black video window that can be stopped and exited. At worst GraphEdit freezes and cannot be terminated requiring a hard reboot.
Have seen No Video, No Audio so far

The mod'ed BDASample seems to spend 5 mins loading and discarding filters before arriving at the same black screen.

Anyone got any idea's ?

This is all under W2K SP4, DirectX 9.0b using the drivers from 16.04.04
Spectrum
What audio/video codecs are you using? You might try using another combination. What percentage of people will end up using Windows 2000? I've concentrated my efforts on XP as I use it exclusively.

Spectrum
JoeyBloggs
Moonlight for video, Intervideo for audio from memory. Just whatever had priority.

W2K is still important to me and many others. I think it runs something like

XP 30%
W2K 30%
NT4 10%
Win98 10%
JoeyBloggs
Ok tried CyberLinkDTV video decoder plus InterVideo audio decoder.
Ch7 177500 Signal strength reported as 78. Same behaviour :cry:
Spectrum
I'm sorry if this is a stupid question but can you check to see that your graph is fully rendered - all of the filters must be connected.

It should end up looking pretty much like this
http://msdn.microsoft.com/library/en-us/st...europa_0vtz.asp

Spectrum
null_pointer
QUOTE
XP      30%
W2K   30%  
NT4    10%
Win98 10%


Where did these number come from?

You may want to also try just connecting pin 3 of the demux filter to the Dump filter (one of the sdk sample filters) and running the graph, this will just dump any data that comes out the pin to disk, for video you should be able to just play back the file using media player. This will show is data is actually passing through the graph.

Also check the Demux filter after you run the graph to see if the PIDS gets mapped to the output pins.

The sample app takes a very long time to iterate through all the filters looking for a match for the IP data out pin that gets added to the demux by default as one of the default components. I will look at removing this from the demux defore calling render on the output pin etc this should speed it up quite a bit.
JoeyBloggs
Yup just like that plus a "MPEG-2 Sections and Tables" filter hanging off the demux pin5.
JoeyBloggs
Ok there does NOT appear to be any PID's mapped to pins 2, 3 for the video and audio decoders. Am I meant to set these manually ?
null_pointer
QUOTE
Ok there does NOT appear to be any PID's mapped to pins 2, 3 for the video and audio decoders. Am I meant to set these manually ?


No, the Network Provider should do all the work for you, it talks to the TIF filter and the Demux filter and should set up the mapping for you, you could try adding the mapping yourself, it should work but you should not have to.
JoeyBloggs
Ok Stop the graph, map the PID's manually, Play. No change in behaviour.

Demux reports MPEG2_VIDEO and MPEG2_AUDIO on pins 2, 3 respectively ~
Spectrum
The fact that you get signal strength indicates the tuner filter/driver is working. Obviously the capture filter/driver is at fault here but I'm not sure how we can debug this...

Are you able to manually set ONID, TSID and SID then submit the reqest again?

Spectrum
JoeyBloggs
Where am I going to get values for them ?
Spectrum
Hmm, good question. If you're in Sydney I can post some values here later on. Otherwise I don't know.

What normally happens is after the graph transitions to play state the capture driver starts streaming data; the TIF filter picks out Transport Information from-which it builds up a table of info on the transport stream. The network provider filter accesses this information and tunes to the default service within that stream.

Maybe like null_pointer said - try connecting the output pin on the capture filter to a file sink and see if any data at all is coming in from hardware via the capture driver.

Spectrum
JoeyBloggs
Yup luckily I am in Sydney.

I've tried using the CyberLink dump filter with both the audio and video pins mapped to correct PID's but got no output ~
null_pointer
Try connecting the dump filter to the output of the capture filter and see if anything is captured.
JoeyBloggs
Good thinking but no joy :cry:
JoeyBloggs
Ok some joy :? I stripped the machine back to a single card nada. Deleted all the BDA drivers and rebooted. Reinstalled the BDA drivers for the single card and it is now working. About to go thru and note all the ONID, PSID, SID etc and then reinstall the second card. Wish me luck ~
JoeyBloggs
Upon reinstallation of the second card (without reinstalling the BDA drivers) GraphEdit freezes when you attempt to Play the graph requiring a hard reboot.

Installing the second set of BDA drivers fixes this and allows both cards to be accessed. I was able to independantly access and tune both cards simultaneously from two (2) instances of GraphEdit.

I am trying to get two providers tuned to different channels in the one graph driving VMR9 PIP. It's not working yet ~

Tuning as previously noted seems a bit haphazard. I hit Submit Tune request count to ten and hit it again. This seems moderately reliable :wink:

So all in all good news. Multiple instances of the BDA drivers working independantly in separate processes under W2K. Obviously still some little bugette's to be hunted down but it's basically working.

Tuning seems very slow compared to the standard drivers. Not sure if this is the BDA Tuning architecture getting in the way ~

Whilst the BDA architecture seems to be able to track multiple copies of the drivers and provide a filter for each ? You seem to be able to instantiate and insert multiple copies of the same BDA Source or Tuning filter in GraphEdit. Which seems wrong. Presumably they should be limited to single instances. Not sure how you would identify and load them programmatically either. Is there some filter enumeration support ?

Can the Scanning Tuner stuff be implemented ?

Anyone have any idea's on extracting and decoding N&N and/or Teletext ?


Kudo's to Spectrum for getting this far biggrin.gif
null_pointer
I have not played with multiple cards yet, I was going to get a single card working well and then move on to multi card etc.
null_pointer
Spectrum,

Is it possible to have the tuner driver return an error when you submit a tune request that can not be locked?

What I mean is that currently if you submit a tune request for a frequency that does not have a carrier no error is returned and it looks like the tune hardwar stays tuned to the previous frequency, this is a problem as I can not tell if the tune request actually worked or not.

I know I can check the Signal Strength but if the tuner falls back to the previous frequency then the signal strength is going to be normal anyway etc.
Spectrum
It's not actually "falling back to the previous frequency", though it may look that way in the property page for the dvb-t network provider filter. You should be able to use this to see whether there is a lock or not:
http://msdn.microsoft.com/library/en-us/di...ignallocked.asp

The following function will in fact return the same result as there is no way to distinguish with the Twinhan hardware:
http://msdn.microsoft.com/library/en-us/di...gnalpresent.asp

Spectrum
null_pointer
Ok, so all I should have to do is query for the IBDA_SignalStatistics Interface on the Tuner device submit a tune request and then check the get_SignalLocked function to see if the signal lock was sucsesfull, that sounds cool.

I will give it a try, I will pass in some bogus frequencies to see what happens.
null_pointer
I am having trouble getting the IBDA_SignalStatistics interface on the tuner, from what I can tell it is just not there. Is there any special trick in getting this interface?
bionicdonkey
Looking at the Network Provider Properties in GraphEdit, it doesn't look like it can get it either
JoeyBloggs
Well whilst the NetworkProvider PropertyPage DOES provide signal strength after you run the graph. I couldn't obtain it programmatically either :?

CODE
if (true)

{

    IBaseFilter*           piBaseFilter       = NULL;

    IBDA_SignalStatistics* piSignalStatistics = NULL;



    FindInterfaceInGraph(m_piGraphBuilder, IID_IBDA_SignalStatistics, &piBaseFilter, reinterpret_cast<void**>(&piSignalStatistics) );



    if (piSignalStatistics != NULL)

    {

 long lSignalStrength = 0;

 long lSignalQuality  = 0;



 hr = piSignalStatistics->get_SignalStrength(&lSignalStrength);

 hr = piSignalStatistics->get_SignalQuality (&lSignalQuality );



 MYTRACE("Signal Strength = %ldn", lSignalStrength);

 MYTRACE("Signal Quality  = %ldn", lSignalQuality );



 piSignalStatistics->Release();

    }

    else

    {

 MYTRACE("FindInterfaceInGraph(m_piGraphBuilder, IID_IBDA_SignalStatistics - FAILED !!!n");

    }

}
null_pointer
You can also get the Signal Strength from the ITuner interface that is exposed on the Network Provider filter.

http://msdn.microsoft.com/library/default....erinterface.asp

But you can not get quality from this interface.
JoeyBloggs
Yup, that's working at least.
ddborg
Hello from the other side of the world..

I found your discussion about the Visionplus DVB-T card after a long ( and ) painfull experience her with my MCE system and the VisionDTV... :cry:

So if I understand Spectrum right, it is possible to use MCE and the VisionPlus ... with his BDA drivers ??

The would save my day biggrin.gif

The only problem is, that the download link is currently dead

I use DVB-T here in Germany and whenever I come to the dialog "searching for channells" MCE fails (b/c of the "non BDA driver" ??)

So if you guys can save me from kickin my machine out of the window
I would REALLY apreciate.. biggrin.gif

TIA
JoeyBloggs
Spectrum's on holiday for a week. However the link seems ok from here.

http://home.swiftdsl.com.au/~spectrum/drivers.zip

If you are still having problems then PM me an email address and I will send them to you.
ddborg
Hello Joey,

thanx for your reply, meanwhile I DL and installed the drivers,
but I'm not shure if they work on my system.

I Think we have some different tuning spaces her (8 Mhz ??) instead of 7

So even with graphedit there is no channel to view :cry:

And no tuning in MCE...


Any clue ??

greez
JoeyBloggs
Sorry I can not help much. You are correct that Bandwidth is 8 MHz in Germany and 7 MHz here in Australia.

You will need something like this http://home.swiftdsl.com.au/~spectrum/tuningspace.zip but modified. Or generated by MCE in Germany. Spectrum may be able to help later ?
bionicdonkey
Have you added the tuning space into the registry?
http://home.swiftdsl.com.au/~spectrum/tuningspace.zip
ddborg
Hello again,

I tried my best, but wasn' lucky at all..

Couldn' get any Pictur in graphedit and no tuning in MCE :cry:

So I think I should switch to the Technotrend / Hauppauge Nova-T..

The only problem seemst to be...... there are NO Nova-T's all over Germany this time....

Belive it or not... out of stock wherever you search (Inet) or go (in real life)..

So could be a perfect time for Visionplus.... but :?

Thanx for your help, I'll keep your forum on my watch list and will come back .

Greeting from the other site of the world

bye
Champion_R
Has anyone tested ShowShifter with the Spectrum BDA drivers yet?
daniel
QUOTE
Has anyone tested ShowShifter with the Spectrum BDA drivers yet?

i just tried it. heres a copy of my post from on DBA forums(my name is Jackson over there) - http://www.dtvforum.info/index.php?showtop...=20&#entry55709

"had a quick try with my vision plus card and spectrums BDA drivers. at first look it seems pretty good. it scanned all channels first go and picked up a bunch i hadnt seen before (the D44 datacasting channels - news, nsw, tab and expo - im in sydney by the way). i was only getting sound on the 1080i channels and no picture but i havnt had much of a look at the settings yet. all other channels looked good. quick tests of recording and timeshifting both worked."
null_pointer
Yep just tried the Beta of ShowShifter and it appears to work quite well with the Spectrum DBA drivers and the VP card.

I have a problem recording but watching channels worked fine.
governor
QUOTE
Yep just tried the Beta of ShowShifter and it appears to work quite well with the Spectrum DBA drivers and the VP card.

I have a problem recording but watching channels worked fine.

Same here. I have two VP cards installed and they both work OK (separately) as long as I don't try to record.
Cheers
renura
Hi Guys,

See my post here

http://robdvd.radfiles.net/viewtopic.php?t=1089

I can actually record anything including 1080i, so it has to be an issue of filters 8)

Cheers

Renura
bionicdonkey
When adding a filter to to graph does one need to manually register the filter using something like this: IBDA_NetworkProvider::RegisterDeviceFilter, or does it automatically do it when you call AddFilter? or is it only used for custom filters??
JoeyBloggs
Well if the filter is not registered how are you adding it in the first place :wink:

IBDA_NetworkProvider::RegisterDeviceFilter is an internal interface don't play with it ohmy.gif
bionicdonkey
QUOTE
Well if the filter is not registered how are you adding it in the first place  :wink:


good point
void0
I am developing DVB-T/MSVidCtl application (MFC dialog based), but I have a problem - MSVidCtl crashes when I pass TuneReguest and then call Run() and I don't really know how to investigate this problem.
Does anybody have MSVidCtl samples for I could check what I did wrong?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2009 Invision Power Services, Inc.