My Cable provider or VDR seems to mess up the audio pid regularly for various channels. Is there a way (or patch) that I can keep the update pids on, except for the apids? They move the vpids around about once a month, so keeping vpid updating depending on sid is worthwhile, otherwise I would turn off the updatepids line. On Mon, 2009-12-14 at 00:03 -0500, Alex Lasnier wrote: > Klaus Schmidinger wrote: > > On 02.08.2009 19:22, Alex Lasnier wrote: > >> Klaus Schmidinger wrote: > >>> On 07/30/09 01:05, Rob Davis wrote: > >>>> Stile wrote: > >>>>> On Tue, Jun 23, 2009 at 12:43 PM, Rob Davis<rob@xxxxxxxxxxxxxxxxx> > >>>>> wrote: > >>>>> > >>>>>> Alex Lasnier wrote: > >>>>>> > >>>>>>> Rob Davis wrote: > >>>>>>> > >>>>>>> > >>>>>>>> I have it normally connected to Comcast cable which should pipe > >>>>>>>> through > >>>>>>>> a bunch of FTV channels using QAM256. These I can see and hear in > >>>>>>>> kaffeine with AC97 audio. However, in VDR it appears to change the > >>>>>>>> pids > >>>>>>>> automatically so that the audio stops working. If I manually change > >>>>>>>> VDR > >>>>>>>> to not auto update and put the APID in then it squeeks rather than > >>>>>>>> works. However, streaming to mplayer using streamdev seems to work. > >>>>>>>> (It > >>>>>>>> does the same this with OTA channels too - although I can only get 4 > >>>>>>>> with a portable antenna.) > >>>>>>>> > >>>>>>>> > >>>>>>> ATSC uses only AC-3 audio, so the Apid should be 0 and the Dpid > >>>>>>> needs to > >>>>>>> be set appropriately. Since the sound squeaks, whatever value you > >>>>>>> have > >>>>>>> set for the Apid should be the Dpid. > >>>>>>> > >>>>>>> For example, > >>>>>>> > >>>>>>> WIFR-Wx:495000:M256:C:0:1984:0;Dpid:0:0:2:0:0:0 > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> Perfect... Thanks > >>>>>> > >>>>>> Is there a way to keep auto update on, but stop Comcast from sending > >>>>>> wrong pids? It keeps settings all audio options to 0 and some vpids > >>>>>> too? > >>>>>> > >>>>>> > >>>>> The streamtype for those AC3 PIDs is 0x81. Adding this to pat.c will > >>>>> add the digital PIDs correctly. > >>>>> > >>>>> --- pat.c~ 2009-06-22 12:28:08.000000000 -0400 > >>>>> +++ pat.c 2009-06-22 13:32:48.461538560 -0400 > >>>>> @@ -432,6 +432,9 @@ > >>>>> } > >>>>> } > >>>>> break; > >>>>> + case 0x81: // AC3 DPIDs > >>>>> + Dpids[NumDpids++] = stream.getPid(); > >>>>> + break; > >>>>> //default: printf("PID: %5d %5d %2d %3d %3d\n", > >>>>> pmt.getServiceId(), stream.getPid(), stream.getStreamType(), > >>>>> pmt.getVersionNumber(), Channel->Number());//XXX > >>>>> } > >>>>> for (SI::Loop::Iterator it; (d = > >>>>> (SI::CaDescriptor*)stream.streamDescriptors.getNext(it, > >>>>> SI::CaDescriptorTag)); ) { > >>>>> > >>>>> > >>>> Perfect. I wonder if this could go in the atscepg patch? > >>> Can you try if this also works if you insert the line > >>> > >>> case 0x81: // AC3 DPIDs > >>> > >>> after the line > >>> > >>> //XXX case 8: // STREAMTYPE_13818_DSMCC > >>> > >>> instead? I'm asking because I'd like to see whether there are > >>> also language descriptors available... > >>> > >>> Klaus > >> Yes, language descriptors are present. However, ATSC also uses 0x81 as > >> the AC3 descriptor tag. So we need another > >> > >> case 0x81: > >> > >> after > >> > >> case SI::AC3DescriptorTag: > > > > In case this is still current, can you please send me a (tested) patch? > > > > Klaus > > > > Sure, please see the attached patch. > > plain text document attachment (vdr-1.7.10-atsc.diff) > diff -ur vdr-1.7.10.orig/dvbdevice.c vdr-1.7.10/dvbdevice.c > --- vdr-1.7.10.orig/dvbdevice.c 2009-06-06 07:17:20.000000000 -0400 > +++ vdr-1.7.10/dvbdevice.c 2009-11-22 13:26:57.000000000 -0500 > @@ -319,6 +319,16 @@ > tuneTimeout = DVBT_TUNE_TIMEOUT; > lockTimeout = DVBT_LOCK_TIMEOUT; > } > + else if (frontendType == SYS_ATSC) { > + // ATSC > + SETCMD(DTV_DELIVERY_SYSTEM, frontendType); > + SETCMD(DTV_FREQUENCY, FrequencyToHz(channel.Frequency())); > + SETCMD(DTV_INVERSION, channel.Inversion()); > + SETCMD(DTV_MODULATION, channel.Modulation()); > + > + tuneTimeout = DVBT_TUNE_TIMEOUT; > + lockTimeout = DVBT_LOCK_TIMEOUT; > + } > else { > esyslog("ERROR: attempt to set channel with unknown DVB frontend type"); > return false; > @@ -904,7 +914,7 @@ > return type == cSource::stNone > || type == cSource::stCable && (frontendType == SYS_DVBC_ANNEX_AC || frontendType == SYS_DVBC_ANNEX_B) > || type == cSource::stSat && (frontendType == SYS_DVBS || frontendType == SYS_DVBS2) > - || type == cSource::stTerr && (frontendType == SYS_DVBT); > + || type == cSource::stTerr && (frontendType == SYS_DVBT || frontendType == SYS_ATSC); > } > > bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const > diff -ur vdr-1.7.10.orig/pat.c vdr-1.7.10/pat.c > --- vdr-1.7.10.orig/pat.c 2009-08-16 11:01:03.000000000 -0400 > +++ vdr-1.7.10/pat.c 2009-11-22 13:31:37.000000000 -0500 > @@ -389,6 +389,7 @@ > break; > case 5: // STREAMTYPE_13818_PRIVATE > case 6: // STREAMTYPE_13818_PES_PRIVATE > + case 0x81: // ATSC AC-3 > //XXX case 8: // STREAMTYPE_13818_DSMCC > { > int dpid = 0; > @@ -397,6 +398,7 @@ > for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) { > switch (d->getDescriptorTag()) { > case SI::AC3DescriptorTag: > + case 0x81: // ATSC AC-3 descriptor tag > dpid = esPid; > break; > case SI::SubtitlingDescriptorTag: > diff -ur vdr-1.7.10.orig/remux.c vdr-1.7.10/remux.c > --- vdr-1.7.10.orig/remux.c 2009-11-22 06:23:27.000000000 -0500 > +++ vdr-1.7.10/remux.c 2009-11-22 13:31:28.000000000 -0500 > @@ -532,6 +532,7 @@ > } > break; > case 0x06: // STREAMTYPE_13818_PES_PRIVATE > + case 0x81: // ATSC AC-3 > { > int dpid = 0; > char lang[MAXLANGCODE1] = ""; > @@ -539,6 +540,7 @@ > for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) { > switch (d->getDescriptorTag()) { > case SI::AC3DescriptorTag: > + case 0x81: // ATSC AC-3 descriptor tag > dbgpatpmt(" AC3"); > dpid = stream.getPid(); > break; > _______________________________________________ > vdr mailing list > vdr@xxxxxxxxxxx > http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr _______________________________________________ vdr mailing list vdr@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr