Help - Search - Members - Calendar
Full Version: BDA Development
DVB Owners Discussion Forum - dvbowners.com > Technical & Development Forums > BDA Driver Development
nate
I've noticed that by default the audio pin on the demux gets assigned as an mpeg2 audio type. AFAIK there's no MPEG2 audio being broadcast in australia, it's all MPEG1 Layer-2 or AC3. So which filter is it that adds the 5 default pins to the demux filter? Is it getting it wrong, or does it just always create those 5 pins no matter what is in the stream? Is there a way to stop it creating the 5 pins so that I can create only the one's I want and can at least get the stream type correct?
I can successfully add an extra pin with the correct stream type and it works fine, but for some reason when i try to remove it an exception is thrown. I suspect it's something to do with the other 5 pins getting removed first, but i have to play a little more to see what's really going on.

When exactly does the tuner card actually tune to whatever frequency you specify in the tune request? I'm assuming it's when the tune request is submitted, but i'm just guessing.

More questions to come when i get home and can post some code.
null_pointer
The default components are used if there are no preferred component types set in the Tuning Space:

http://msdn.microsoft.com/library/en-us/di...mcomponents.asp

On the above page is info on how to over ride the defult component types.
JoeyBloggs
Are you now creating component's in the initial DVBTuneRequest ?

ie is it possible to tune directly to an explicit PS ?
JoeyBloggs
Nate, read though this

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

It's a sequence between the NetworkProvider, Demux and TransportInformation filters
nate
Thanks guys. No i havn't done anything special in the initial tune request. At least i've got some decent material to read through now. Not that i looked all that hard before, but everything i had read was video control based and very vague.
nate
QUOTE
Do not use the IMPEG2PIDMap interface on the MPEG-2 Demultiplexer, because the Network Provider must be notified of all PID mappings in a BDA graph. It forwards the call to the demux.)


That's fine if you're creating a filter because you will have a IPin to pass to the RegisterTIFEx method, but what about when we're just mapping pids from the application? How do we get the IMPEG2PIDMap interface for output pins of the demux from the network provider?
JoeyBloggs
You don't. You retrieve the current TuneRequest, fill in the components and activate the one/s you want. The filter set then does the rest internally ~ That's the theory anyway

further down the page wink.gif
http://msdn.microsoft.com/library/default....mcomponents.asp

and apparently

Default Preferred Component Types

A tuning space can have a list of preferred component types. If so, the Network Provider uses the list to configure the output pins on the MPEG-2 Demultiplexer filter. Otherwise, the Network Provider creates a default set of output pins:
nate
Yes. Sounds good in theory. But there doesn't appear to be a way to assign a PID to a component. You can set the media types by assigning an IComponentType to an IComponent, but how do you tell it which PID to use?

EDIT: Ok, i think i found it. IMPEG2Component.
JoeyBloggs
Yup smile.gif just have a look a DumpTuneRequest() from this http://robdvd.radfiles.net/viewtopic.php?p=11273#11273
nate
There's no ITuneRequest::put_Components so am i right in assuming that adding a component to the IComponents pointer returned by ITuneRequest::get_Components updates the tune request directly?
JoeyBloggs
Well this is where we are into unknown territory :wink: Unless Shaun has some idea
null_pointer
From my understanding this is what happens when you submit a tune request.

You create a tune request and submit it to the Network Provider
You then create the graph and run it
The network provider works with the TIF filter to set up the Demux

Ok at this point you should have a working graph, to see what Components are available you need to then request the current tune request from the network provider as the origianl one is just copied into a new one inside the Network provider.

Once you have a pointer to the actual Tune Request that is being used you can query for the Components that are currently available and enable or disable them, this will cause the Network Provider and the TIF filter to remap the Demux filter etc.

If you want to change to a different program you need to get a tune request for that program, you can do this by gettting the services from the TIF filter etc.

I have not tired this yet, this is what should happen :-)

In WS I insert an Infinte Tee and a new Demux filtet that I control manually. I also remove all the pins except for pin 1 from the Demux connected to the TIF filter, run WS and connect to it using Graphedit to see what I mean.

This effectivly allows the Network Provider and the TIF filter to do its thing and allows me control over what PIDS I want in the output stream etc from the second demux filter.
JoeyBloggs
QUOTE
There's no ITuneRequest::put_Components so am i right in assuming that adding a component to the IComponents pointer returned by ITuneRequest::get_Components updates the tune request directly?


I'm thinking (and I haven't tried it yet) that puting the appropriate IMpeg2Components into the PreferedComponents of the initial TuneRequest might go straight there. Otherwise you really will have to wait for a ServiceChanged notification from the TIF and then go though the component activation sequence as outlined above ~
null_pointer
When you are setting up the prefered component list you only set component types not full conponent details so you can only set what type of components should be used as the prefered.

If you want to change components or change programs you will have to do it via the Tuner Request and Network Provider.
JoeyBloggs
Oh well, I guess it gives you a chance to match by name if the PID's change ~
nate
Maybe i might have to settle for IMPEG2TuneRequest::put_ProgNo

It should work fine most of the time, but i still probably won't work for AC3.
JoeyBloggs
Well the question is, does one of these correspond to the AC3 stream in a reliable way ?

CODE
typedef V1_ENUM enum MPEG2StreamType {

   BDA_UNITIALIZED_MPEG2STREAMTYPE = -1,

   Reserved1 = 0x0,

   ISO_IEC_11172_2_VIDEO   = Reserved1 + 1,

   ISO_IEC_13818_2_VIDEO   = ISO_IEC_11172_2_VIDEO + 1,

   ISO_IEC_11172_3_AUDIO   = ISO_IEC_13818_2_VIDEO + 1,

   ISO_IEC_13818_3_AUDIO   = ISO_IEC_11172_3_AUDIO + 1,

   ISO_IEC_13818_1_PRIVATE_SECTION = ISO_IEC_13818_3_AUDIO + 1,

   ISO_IEC_13818_1_PES     = ISO_IEC_13818_1_PRIVATE_SECTION + 1,

   ISO_IEC_13522_MHEG      = ISO_IEC_13818_1_PES + 1,

   ANNEX_A_DSM_CC          = ISO_IEC_13522_MHEG + 1,

   ITU_T_REC_H_222_1       = ANNEX_A_DSM_CC + 1,

   ISO_IEC_13818_6_TYPE_A  = ITU_T_REC_H_222_1 + 1,

   ISO_IEC_13818_6_TYPE_B  = ISO_IEC_13818_6_TYPE_A + 1,

   ISO_IEC_13818_6_TYPE_C  = ISO_IEC_13818_6_TYPE_B + 1,

   ISO_IEC_13818_6_TYPE_D  = ISO_IEC_13818_6_TYPE_C + 1,

   ISO_IEC_13818_1_AUXILIARY = ISO_IEC_13818_6_TYPE_D + 1,

   ISO_IEC_13818_1_RESERVED = ISO_IEC_13818_1_AUXILIARY + 1,

   USER_PRIVATE            = ISO_IEC_13818_1_RESERVED + 1

} MPEG2StreamType;
nate
From the little bit of playing i did with the PsiParser the AC3 is always of type ISO_IEC_13818_1_PRIVATE_SECTION but so is teletext or subtitle data.
JoeyBloggs
Well here is a scan of Sydney channels, nothing conclusive that I can see ~

CODE
################################################################################

m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4112:545:544

Service Property Description.Name = ABC HDTV

Service Property Provider.Name = ABC

Service Property Provider.NetworkName =

ONID = 4112 : SID = 544 : TSID = 545 : ProgPID = 544 : PID = 2309 : pcrPID = 2 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4112 : SID = 544 : TSID = 545 : ProgPID = 544 : PID = 2310 : pcrPID = 2 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4112 : SID = 544 : TSID = 545 : ProgPID = 544 : PID = 2311 : pcrPID = 2 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4112:545:545

Service Property Description.Name = ABC TV Sydney

Service Property Provider.Name = ABC

Service Property Provider.NetworkName =

ONID = 4112 : SID = 545 : TSID = 545 : ProgPID = 545 : PID = 512 : pcrPID = 128 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4112 : SID = 545 : TSID = 545 : ProgPID = 545 : PID = 576 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4112 : SID = 545 : TSID = 545 : ProgPID = 545 : PID = 650 : pcrPID = 128 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          

ONID = 4112 : SID = 545 : TSID = 545 : ProgPID = 545 : PID = 660 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4112:545:546

Service Property Description.Name = ABC TV 2

Service Property Provider.Name = ABC

Service Property Provider.NetworkName =

ONID = 4112 : SID = 546 : TSID = 545 : ProgPID = 546 : PID = 512 : pcrPID = 128 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4112 : SID = 546 : TSID = 545 : ProgPID = 546 : PID = 576 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4112 : SID = 546 : TSID = 545 : ProgPID = 546 : PID = 650 : pcrPID = 128 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4112:545:547

Service Property Description.Name = ABC TV 3

Service Property Provider.Name = ABC

Service Property Provider.NetworkName =

ONID = 4112 : SID = 547 : TSID = 545 : ProgPID = 547 : PID = 512 : pcrPID = 128 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4112 : SID = 547 : TSID = 545 : ProgPID = 547 : PID = 576 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4112 : SID = 547 : TSID = 545 : ProgPID = 547 : PID = 650 : pcrPID = 128 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          

ONID = 4112 : SID = 547 : TSID = 545 : ProgPID = 547 : PID = 2048 : pcrPID = 128 : CAT = Other   : MPEG2StreamType = ISO_IEC_13818_6_TYPE_B        

ONID = 4112 : SID = 547 : TSID = 545 : ProgPID = 547 : PID = 2049 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PRIVATE_SECTION



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4112:545:548

Service Property Description.Name = ABC TV 4

Service Property Provider.Name = ABC

Service Property Provider.NetworkName =

ONID = 4112 : SID = 548 : TSID = 545 : ProgPID = 548 : PID = 512 : pcrPID = 128 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4112 : SID = 548 : TSID = 545 : ProgPID = 548 : PID = 576 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4112 : SID = 548 : TSID = 545 : ProgPID = 548 : PID = 650 : pcrPID = 128 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4112:545:549

Service Property Description.Name = Test.

Service Property Provider.Name = ABC

Service Property Provider.NetworkName =



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4112:545:550

Service Property Description.Name = ABC DiG Radio

Service Property Provider.Name = ABC

Service Property Provider.NetworkName =

ONID = 4112 : SID = 550 : TSID = 545 : ProgPID = 550 : PID = 2312 : pcrPID = 1 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          



################################################################################

################################################################################

m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4115:1282:1312

Service Property Description.Name = 7 Digital

Service Property Provider.Name = Seven Network

Service Property Provider.NetworkName =

ONID = 4115 : SID = 1312 : TSID = 1282 : ProgPID = 1312 : PID = 513 : pcrPID = 1 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4115 : SID = 1312 : TSID = 1282 : ProgPID = 1312 : PID = 514 : pcrPID = 1 : CAT = Audio   : MPEG2StreamType = ISO_IEC_11172_3_AUDIO          

ONID = 4115 : SID = 1312 : TSID = 1282 : ProgPID = 1312 : PID = 516 : pcrPID = 1 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4115:1282:1313

Service Property Description.Name = 7 Digital 1

Service Property Provider.Name = Seven Network

Service Property Provider.NetworkName =

ONID = 4115 : SID = 1313 : TSID = 1282 : ProgPID = 1313 : PID = 513 : pcrPID = 1 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4115 : SID = 1313 : TSID = 1282 : ProgPID = 1313 : PID = 514 : pcrPID = 1 : CAT = Audio   : MPEG2StreamType = ISO_IEC_11172_3_AUDIO          

ONID = 4115 : SID = 1313 : TSID = 1282 : ProgPID = 1313 : PID = 516 : pcrPID = 1 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4115:1282:1314

Service Property Description.Name = 7 Digital 2

Service Property Provider.Name = Seven Network

Service Property Provider.NetworkName =

ONID = 4115 : SID = 1314 : TSID = 1282 : ProgPID = 1314 : PID = 513 : pcrPID = 1 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4115 : SID = 1314 : TSID = 1282 : ProgPID = 1314 : PID = 514 : pcrPID = 1 : CAT = Audio   : MPEG2StreamType = ISO_IEC_11172_3_AUDIO          

ONID = 4115 : SID = 1314 : TSID = 1282 : ProgPID = 1314 : PID = 516 : pcrPID = 1 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4115:1282:1315

Service Property Description.Name = 7 Digital 3

Service Property Provider.Name = Seven Network

Service Property Provider.NetworkName =

ONID = 4115 : SID = 1315 : TSID = 1282 : ProgPID = 1315 : PID = 513 : pcrPID = 1 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4115 : SID = 1315 : TSID = 1282 : ProgPID = 1315 : PID = 514 : pcrPID = 1 : CAT = Audio   : MPEG2StreamType = ISO_IEC_11172_3_AUDIO          

ONID = 4115 : SID = 1315 : TSID = 1282 : ProgPID = 1315 : PID = 516 : pcrPID = 1 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4115:1282:1316

Service Property Description.Name = 7 HD Digital

Service Property Provider.Name = Seven Network

Service Property Provider.NetworkName =

ONID = 4115 : SID = 1316 : TSID = 1282 : ProgPID = 1316 : PID = 516 : pcrPID = 65 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4115 : SID = 1316 : TSID = 1282 : ProgPID = 1316 : PID = 577 : pcrPID = 65 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4115 : SID = 1316 : TSID = 1282 : ProgPID = 1316 : PID = 578 : pcrPID = 65 : CAT = Audio   : MPEG2StreamType = ISO_IEC_11172_3_AUDIO          



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4115:1282:1318

Service Property Description.Name = Program Guide

Service Property Provider.Name = Seven Network

Service Property Provider.NetworkName =

ONID = 4115 : SID = 1318 : TSID = 1282 : ProgPID = 1318 : PID = 609 : pcrPID = 97 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4115 : SID = 1318 : TSID = 1282 : ProgPID = 1318 : PID = 610 : pcrPID = 97 : CAT = Audio   : MPEG2StreamType = ISO_IEC_11172_3_AUDIO          



################################################################################

################################################################################

m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4114:1:1

Service Property Description.Name = NINE DIGITAL

Service Property Provider.Name = Nine Network Australia

Service Property Provider.NetworkName =

ONID = 4114 : SID = 1 : TSID = 1 : ProgPID = 1 : PID = 519 : pcrPID = 135 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4114 : SID = 1 : TSID = 1 : ProgPID = 1 : PID = 583 : pcrPID = 135 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4114 : SID = 1 : TSID = 1 : ProgPID = 1 : PID = 720 : pcrPID = 135 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          

ONID = 4114 : SID = 1 : TSID = 1 : ProgPID = 1 : PID = 721 : pcrPID = 135 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4114 : SID = 1 : TSID = 1 : ProgPID = 1 : PID = 2306 : pcrPID = 135 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PRIVATE_SECTION

ONID = 4114 : SID = 1 : TSID = 1 : ProgPID = 1 : PID = 2307 : pcrPID = 135 : CAT = Other   : MPEG2StreamType = ISO_IEC_13818_6_TYPE_B        

ONID = 4114 : SID = 1 : TSID = 1 : ProgPID = 1 : PID = 2308 : pcrPID = 135 : CAT = Other   : MPEG2StreamType = ISO_IEC_13818_6_TYPE_C        



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4114:1:5

Service Property Description.Name = NINE HD

Service Property Provider.Name = Nine Network Australia

Service Property Provider.NetworkName =

ONID = 4114 : SID = 5 : TSID = 1 : ProgPID = 5 : PID = 512 : pcrPID = 128 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4114 : SID = 5 : TSID = 1 : ProgPID = 5 : PID = 650 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4114:1:6

Service Property Description.Name = NINE GUIDE

Service Property Provider.Name = Nine Network Australia

Service Property Provider.NetworkName =

ONID = 4114 : SID = 6 : TSID = 1 : ProgPID = 6 : PID = 517 : pcrPID = 133 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4114 : SID = 6 : TSID = 1 : ProgPID = 6 : PID = 583 : pcrPID = 133 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4114 : SID = 6 : TSID = 1 : ProgPID = 6 : PID = 720 : pcrPID = 133 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          



################################################################################

################################################################################

m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4116:1538:1569

Service Property Description.Name = TEN Digital

Service Property Provider.Name = Ten Sydney

Service Property Provider.NetworkName =

ONID = 4116 : SID = 1569 : TSID = 1538 : ProgPID = 1569 : PID = 512 : pcrPID = 128 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4116 : SID = 1569 : TSID = 1538 : ProgPID = 1569 : PID = 576 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4116 : SID = 1569 : TSID = 1538 : ProgPID = 1569 : PID = 650 : pcrPID = 128 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          

ONID = 4116 : SID = 1569 : TSID = 1538 : ProgPID = 1569 : PID = 651 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4116:1538:1570

Service Property Description.Name = TEN Digital 1

Service Property Provider.Name = Ten Sydney

Service Property Provider.NetworkName =

ONID = 4116 : SID = 1570 : TSID = 1538 : ProgPID = 1570 : PID = 512 : pcrPID = 128 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4116 : SID = 1570 : TSID = 1538 : ProgPID = 1570 : PID = 576 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4116 : SID = 1570 : TSID = 1538 : ProgPID = 1570 : PID = 650 : pcrPID = 128 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          

ONID = 4116 : SID = 1570 : TSID = 1538 : ProgPID = 1570 : PID = 651 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4116:1538:1571

Service Property Description.Name = TEN Digital 2

Service Property Provider.Name = Ten Sydney

Service Property Provider.NetworkName =

ONID = 4116 : SID = 1571 : TSID = 1538 : ProgPID = 1571 : PID = 512 : pcrPID = 128 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4116 : SID = 1571 : TSID = 1538 : ProgPID = 1571 : PID = 576 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4116 : SID = 1571 : TSID = 1538 : ProgPID = 1571 : PID = 650 : pcrPID = 128 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          

ONID = 4116 : SID = 1571 : TSID = 1538 : ProgPID = 1571 : PID = 651 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4116:1538:1572

Service Property Description.Name = TEN Digital 3

Service Property Provider.Name = Ten Sydney

Service Property Provider.NetworkName =

ONID = 4116 : SID = 1572 : TSID = 1538 : ProgPID = 1572 : PID = 512 : pcrPID = 128 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4116 : SID = 1572 : TSID = 1538 : ProgPID = 1572 : PID = 576 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4116 : SID = 1572 : TSID = 1538 : ProgPID = 1572 : PID = 650 : pcrPID = 128 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          

ONID = 4116 : SID = 1572 : TSID = 1538 : ProgPID = 1572 : PID = 651 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4116:1538:1573

Service Property Description.Name = TEN Digital

Service Property Provider.Name = Ten Sydney

Service Property Provider.NetworkName =

ONID = 4116 : SID = 1573 : TSID = 1538 : ProgPID = 1573 : PID = 512 : pcrPID = 128 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4116 : SID = 1573 : TSID = 1538 : ProgPID = 1573 : PID = 576 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4116 : SID = 1573 : TSID = 1538 : ProgPID = 1573 : PID = 650 : pcrPID = 128 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          

ONID = 4116 : SID = 1573 : TSID = 1538 : ProgPID = 1573 : PID = 651 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4116:1538:1574

Service Property Description.Name = TEN Digital 4

Service Property Provider.Name = Ten Sydney

Service Property Provider.NetworkName =

ONID = 4116 : SID = 1574 : TSID = 1538 : ProgPID = 1574 : PID = 512 : pcrPID = 128 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4116 : SID = 1574 : TSID = 1538 : ProgPID = 1574 : PID = 576 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4116 : SID = 1574 : TSID = 1538 : ProgPID = 1574 : PID = 650 : pcrPID = 128 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          

ONID = 4116 : SID = 1574 : TSID = 1538 : ProgPID = 1574 : PID = 651 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4116:1538:1575

Service Property Description.Name = TEN Digital

Service Property Provider.Name = Ten Sydney

Service Property Provider.NetworkName =

ONID = 4116 : SID = 1575 : TSID = 1538 : ProgPID = 1575 : PID = 512 : pcrPID = 128 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4116 : SID = 1575 : TSID = 1538 : ProgPID = 1575 : PID = 576 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4116 : SID = 1575 : TSID = 1538 : ProgPID = 1575 : PID = 650 : pcrPID = 128 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          

ONID = 4116 : SID = 1575 : TSID = 1538 : ProgPID = 1575 : PID = 651 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4116:1538:1576

Service Property Description.Name = TEN HD

Service Property Provider.Name = Ten Sydney

Service Property Provider.NetworkName =

ONID = 4116 : SID = 1576 : TSID = 1538 : ProgPID = 1576 : PID = 514 : pcrPID = 130 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4116 : SID = 1576 : TSID = 1538 : ProgPID = 1576 : PID = 576 : pcrPID = 130 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4116 : SID = 1576 : TSID = 1538 : ProgPID = 1576 : PID = 672 : pcrPID = 130 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 4116:1538:1577

Service Property Description.Name = Ten Digital

Service Property Provider.Name = Ten Sydney

Service Property Provider.NetworkName =

ONID = 4116 : SID = 1577 : TSID = 1538 : ProgPID = 1577 : PID = 512 : pcrPID = 128 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 4116 : SID = 1577 : TSID = 1538 : ProgPID = 1577 : PID = 576 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 4116 : SID = 1577 : TSID = 1538 : ProgPID = 1577 : PID = 650 : pcrPID = 128 : CAT = Audio   : MPEG2StreamType = ISO_IEC_13818_3_AUDIO          

ONID = 4116 : SID = 1577 : TSID = 1538 : ProgPID = 1577 : PID = 651 : pcrPID = 128 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            



################################################################################

################################################################################

m_piGuideData->GetServiceProperties()

Service Property Description.ID = 12802:768:768

Service Property Description.Name = SBS HD

Service Property Provider.Name = SBS

Service Property Provider.NetworkName = SBS NETWORK

ONID = 12802 : SID = 768 : TSID = 768 : ProgPID = 768 : PID = 102 : pcrPID = 102 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          

ONID = 12802 : SID = 768 : TSID = 768 : ProgPID = 768 : PID = 103 : pcrPID = 102 : CAT = Audio   : MPEG2StreamType = ISO_IEC_11172_3_AUDIO          



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 12802:768:769

Service Property Description.Name = SBS DIGITAL 1

Service Property Provider.Name = SBS

Service Property Provider.NetworkName = SBS NETWORK

ONID = 12802 : SID = 769 : TSID = 768 : ProgPID = 769 : PID = 41 : pcrPID = 161 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 12802 : SID = 769 : TSID = 768 : ProgPID = 769 : PID = 81 : pcrPID = 161 : CAT = Audio   : MPEG2StreamType = ISO_IEC_11172_3_AUDIO          

ONID = 12802 : SID = 769 : TSID = 768 : ProgPID = 769 : PID = 161 : pcrPID = 161 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 12802:768:770

Service Property Description.Name = SBS DIGITAL 2

Service Property Provider.Name = SBS

Service Property Provider.NetworkName = SBS NETWORK

ONID = 12802 : SID = 770 : TSID = 768 : ProgPID = 770 : PID = 42 : pcrPID = 162 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 12802 : SID = 770 : TSID = 768 : ProgPID = 770 : PID = 83 : pcrPID = 162 : CAT = Audio   : MPEG2StreamType = ISO_IEC_11172_3_AUDIO          

ONID = 12802 : SID = 770 : TSID = 768 : ProgPID = 770 : PID = 162 : pcrPID = 162 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 12802:768:772

Service Property Description.Name = SBS EPG

Service Property Provider.Name = SBS

Service Property Provider.NetworkName = SBS NETWORK

ONID = 12802 : SID = 772 : TSID = 768 : ProgPID = 772 : PID = 43 : pcrPID = 163 : CAT = Data    : MPEG2StreamType = ISO_IEC_13818_1_PES            

ONID = 12802 : SID = 772 : TSID = 768 : ProgPID = 772 : PID = 85 : pcrPID = 163 : CAT = Audio   : MPEG2StreamType = ISO_IEC_11172_3_AUDIO          

ONID = 12802 : SID = 772 : TSID = 768 : ProgPID = 772 : PID = 163 : pcrPID = 163 : CAT = Video   : MPEG2StreamType = ISO_IEC_13818_2_VIDEO          



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 12802:768:782

Service Property Description.Name = SBS RADIO 1

Service Property Provider.Name = SBS

Service Property Provider.NetworkName = SBS NETWORK

ONID = 12802 : SID = 782 : TSID = 768 : ProgPID = 782 : PID = 201 : pcrPID = 201 : CAT = Audio   : MPEG2StreamType = ISO_IEC_11172_3_AUDIO          



m_piGuideData->GetServiceProperties()

Service Property Description.ID = 12802:768:783

Service Property Description.Name = SBS RADIO 2

Service Property Provider.Name = SBS

Service Property Provider.NetworkName = SBS NETWORK

ONID = 12802 : SID = 783 : TSID = 768 : ProgPID = 783 : PID = 202 : pcrPID = 202 : CAT = Audio   : MPEG2StreamType = ISO_IEC_11172_3_AUDIO          



################################################################################

################################################################################
nate
Null, Joey
Just in case you havn't figured it out yet, you don't need to have a tuning space in the registry. You can just load up the DVB-T tuning space directly.
CODE
m_pTuningSpace.CoCreateInstance(CLSID_DVBTuningSpace);

CComQIPtr <IDVBTuningSpace2> piDVBTuningSpace(m_pTuningSpace);

if (!piDVBTuningSpace)

{

    m_pTuningSpace.Release();

    return E_FAIL;

}

if (FAILED(hr = piDVBTuningSpace->put_SystemType(DVB_Terrestrial)))

{

    piDVBTuningSpace.Release();

    m_pTuningSpace.Release();

    return E_FAIL;

}

CComBSTR bstrNetworkType = "{216C62DF-6D7F-4E9A-8571-05F14EDB766A}";

if (FAILED(hr = piDVBTuningSpace->put_NetworkType(bstrNetworkType)))

{

    piDVBTuningSpace.Release();

    m_pTuningSpace.Release();

    return E_FAIL;

}

piDVBTuningSpace.Release();


Null, i noticed in the BDA Web Sheduler thread that what you've done works with the Nova-T BDA drivers. At the moment i'm loading spectrum's Tuner and Capture filter by name which obviously isn't going to work for other cards. Are you just adding the first filter in the KSCATEGORY_BDA_NETWORK_TUNER and KSCATEGORY_BDA_RECEIVER_COMPONENT Device class? or have you done it some other way?

Finally, i've been working on setting a new DefaultPreferredComponentTypes by following the example here but i can't figure out how to create a ComponentType for the TIF filter or MPEG-2 Sections and Tables filter. The types that IComponentType::put_Category accepts (ComponentCategory) don't include a PSI type. Any ideas? I tried CategoryData and that didn't work.
null_pointer
Yep, I am just using the same code that is in the Sample BDA app from the SDK, it just loads the first filter in the catagory, I will need to look at this later but for now it works with one card ok.

Multi card support will be a bit trickier but I am yet to start playing with that.
nate
QUOTE
Yep, I am just using the same code that is in the Sample BDA app from the SDK, it just loads the first filter in the catagory, I will need to look at this later but for now it works with one card ok.

Multi card support will be a bit trickier but I am yet to start playing with that.
Yeah. I'm wondering about the best way to make it user configurable. The easiest way is probably to just let the user specify the CLSIDs of each tuner and capture filter in a file. Then later i can write a gui that lists the tuners and capture filters and updates the file with whichever they choose.
nate
QUOTE
The easiest way is probably to just let the user specify the CLSIDs of each tuner and capture filter in a file.

Or even better. Perhaps we should all decide on a registry structure where we can store infomation about tuners.

Hows this for a first draft.

[list]HKLMSoftwareDTV TunersTuner 1
[list]TunerFilterCLSID

[*]CaptureFilterCLSID

[*]DefaultTuningSpace (might come in handy if we want support satelite or something later)

[*]InUseByPID (pid of process using tuner, -1 if free)

[*]InUseByFriendlyName
[list]HKLMSoftwareDTV TunersTuner 2
[list]...
[list]HKLMSoftwareDTV TunersTuner n
[list]
[list]What else should we include?

With InUseByPID being the pid of the process using it then you can get around the problem of applications not releasing a tuner if they crash by checking if the pid still exists. Might need to make sure it's set back to -1 after a reboot though because you might get a different process startup with the same pid.

I went for the term tuner instead of card incase we get cards with multiple tuners.

What do people think? Good idea? I've only put about 15 minutes worth of thought into it so it probably needs some impoving, but it seems like a good start to me.
null_pointer
The main problem with using the reg is that what happens if the app crashes, you can leave the reg in a state that effectivly disables a card.

This is the approch the TwinHan used with its multicard support and it just does not work from what I can see.

We may be able to use the Registry to list available cards etc but system mutexes or counters may be a better way of detecting if a card is in use.
nate
QUOTE
The main problem with using the reg is that what happens if the app crashes, you can leave the reg in a state that effectivly disables a card.
Did you read what i wrote in my last post about storing the pid?
null_pointer
So if your app tires to get a card it looks in the InUseBy and if there is a PID in there it checks to see if the PID is still active, if it is it assumes it is still running and tryes the next card?

What happens if anther process start up and is assigned the PID of the just crashed app, your app would think the card is still in use, this is a long shot I know but could happen, you would have to make a design call, is the likely hood of this occuring small enough to ignore.
nate
QUOTE
What happens if anther process start up and is assigned the PID of the just crashed app, your app would think the card is still in use, this is a long shot I know but could happen, you would have to make a design call, is the likely hood of this occuring small enough to ignore.
AFAIK pid's are assigned consecutively so once a pid has been used it shouldn't be used again unless the os is rebooted, although i havn't been able to find any documentation to prove that yet.

We will need to have something that runs on startup that resets all the InUseByPID's to -1, but aside from that i think it should work pretty well.
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-2008 Invision Power Services, Inc.