[vdr] No Audio on ATSC Qam256 or OTA..
Rob Davis
rob at davis-family.info
Mon Feb 15 19:07:22 CET 2010
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 at davis-family.info>
> >>>>> 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 at linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
More information about the vdr
mailing list