No Audio on ATSC Qam256 or OTA..

Message ID 4B25C705.4090303@fepg.org
State New
Headers

Commit Message

Alex Lasnier Dec. 14, 2009, 5:03 a.m. UTC
  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@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.
  

Comments

Rob Davis Feb. 15, 2010, 6:07 p.m. UTC | #1
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@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@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
  
Timothy D. Lenz Feb. 15, 2010, 11:01 p.m. UTC | #2
You can just turn off updates in vdr setup menu. Then it shouldn't 
change anything and you can do it manually

On 2/15/2010 11:07 AM, Rob Davis wrote:
> 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@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@linuxtv.org
>> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>
>
>
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>
  

Patch

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;