vdr and aac support

Message ID 4BED5A90.2040703@tvdr.de
State New
Headers

Commit Message

Klaus Schmidinger May 14, 2010, 2:13 p.m. UTC
  On 07.05.2010 09:53, Newsy Paper wrote:
> Hi!
> 
> there are some channels using aac for audio. I.e. SABC1 at 23.5°East 10758 V 22000 8/9 DVB-S2
> Seems vdr doesn't support aac as no pid is entered neither for apid nor for ddpid. I think xine should support acc or doesn't it? So it should be no big deal do extend vdr to support aac.

Please try this and see if it makes any difference:



Klaus
  

Comments

Newsy Paper May 15, 2010, 1:12 p.m. UTC | #1
thx Klaus for your patch, but seems like there's something missing. Perhaps in remux.c?

DDpid and Apid are both 0
If I enter aac pid in ddpid field it's set back to 0 again.

kind regards

Newspaperman

--- Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> schrieb am Fr, 14.5.2010:

> Von: Klaus Schmidinger <Klaus.Schmidinger@tvdr.de>
> Betreff: Re: [vdr] vdr and aac support
> An: vdr@linuxtv.org
> Datum: Freitag, 14. Mai, 2010 16:13 Uhr
> On 07.05.2010 09:53, Newsy Paper
> wrote:
> > Hi!
> > 
> > there are some channels using aac for audio. I.e.
> SABC1 at 23.5°East 10758 V 22000 8/9 DVB-S2
> > Seems vdr doesn't support aac as no pid is entered
> neither for apid nor for ddpid. I think xine should support
> acc or doesn't it? So it should be no big deal do extend vdr
> to support aac.
> 
> Please try this and see if it makes any difference:
> 
> --- pat.c       2010/03/27
> 15:17:46     2.9
> +++ pat.c       2010/05/14
> 14:12:31
> @@ -401,6 +401,7 @@
>                
>            switch
> (d->getDescriptorTag()) {
>                
>              case
> SI::AC3DescriptorTag:
>                
>              case
> SI::EnhancedAC3DescriptorTag:
> +               
>             case
> SI::AACDescriptorTag:
>                
>                
>   dpid = esPid;
>                
>                
>   ProcessCaDescriptors = true;
>                
>                
>   break;
> 
> --- eit.c       2010/01/08
> 15:17:09     2.11
> +++ eit.c       2010/05/14
> 14:06:55
> @@ -257,7 +257,7 @@
>                
>   SI::ComponentDescriptor *cd =
> (SI::ComponentDescriptor *)d;
>                
>   uchar Stream = cd->getStreamContent();
>                
>   uchar Type = cd->getComponentType();
> -             
>    if (1 <= Stream && Stream <=
> 4 && Type != 0) { // 1=video, 2=audio, 3=subtitles,
> 4=AC3
> +             
>    if (1 <= Stream && Stream <=
> 6 && Type != 0) { // 1=MPEG2-video, 2=MPEG1-audio,
> 3=subtitles, 4=AC3-audio, 5=H.264-video, 6=HEAAC-audio
>                
>      if (!Components)
>                
>         Components = new cComponents;
>                
>      char buffer[Utf8BufSize(256)];
> 
> 
> Klaus
> 
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>
  
Steffen Barszus May 15, 2010, 1:26 p.m. UTC | #2
On Fri, 14 May 2010 16:13:36 +0200
Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:

> On 07.05.2010 09:53, Newsy Paper wrote:
> > Hi!
> > 
> > there are some channels using aac for audio. I.e. SABC1 at
> > 23.5°East 10758 V 22000 8/9 DVB-S2 Seems vdr doesn't support aac as
> > no pid is entered neither for apid nor for ddpid. I think xine
> > should support acc or doesn't it? So it should be no big deal do
> > extend vdr to support aac.
> 
> Please try this and see if it makes any difference:
> 
> --- pat.c       2010/03/27 15:17:46     2.9
> +++ pat.c       2010/05/14 14:12:31
> @@ -401,6 +401,7 @@
>                            switch (d->getDescriptorTag()) {
>                              case SI::AC3DescriptorTag:
>                              case SI::EnhancedAC3DescriptorTag:
> +                            case SI::AACDescriptorTag:
>                                   dpid = esPid;
>                                   ProcessCaDescriptors = true;
>                                   break;
> 
> --- eit.c       2010/01/08 15:17:09     2.11
> +++ eit.c       2010/05/14 14:06:55
> @@ -257,7 +257,7 @@
>                   SI::ComponentDescriptor *cd =
> (SI::ComponentDescriptor *)d; uchar Stream = cd->getStreamContent();
>                   uchar Type = cd->getComponentType();
> -                 if (1 <= Stream && Stream <= 4 && Type != 0) { //
> 1=video, 2=audio, 3=subtitles, 4=AC3
> +                 if (1 <= Stream && Stream <= 6 && Type != 0) { //
> 1=MPEG2-video, 2=MPEG1-audio, 3=subtitles, 4=AC3-audio,
> 5=H.264-video, 6=HEAAC-audio if (!Components) Components = new
> cComponents; char buffer[Utf8BufSize(256)];
>

The second change marks at least the HD Recordings as such - usefull
for applications needing to know this w/o analyzing files :) 

Thanks !
  
Luis Fernandes May 15, 2010, 3:40 p.m. UTC | #3
hello everybody, in my case of he-aac streamtype 0x11 coming in, if
you want to record or listen to xineliboutput i have to change in
remux.c and pat.c in the following lines,

pat.c

  case 0x04: / / STREAMTYPE_13818_AUDIO
+ case 0x11: / / ISO/IEC 14496-3 Audio with LATM transport syntax


thus adds the audio pid correctly

remux.c

for (int n = 0; Channel->Apid(n); n++) {
-         i += MakeStream(buf + i, 0x04, Channel->Apid(n));
+       i += MakeStream(buf + i, 0x11, Channel->Apid(n));
         const char *Alang = Channel->Alang(n);

  case 0x04: / / STREAMTYPE_13818_AUDIO
+ case 0x11: / / ISO/IEC 14496-3 Audio with LATM transport syntax


but this way I can not hear sound from other channels, only the
channels with streamtype 0x11
is there any way to identify the audio streamtype in this line so that
the MakeStream (buf + i, streamaudiotype, Channel-> APID (n));

Excuse my English
Best regards

2010/5/15 Newsy Paper <newspaperman_germany@yahoo.com>:
> thx Klaus for your patch, but seems like there's something missing. Perhaps in remux.c?
>
> DDpid and Apid are both 0
> If I enter aac pid in ddpid field it's set back to 0 again.
>
> kind regards
>
> Newspaperman
>
> --- Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> schrieb am Fr, 14.5.2010:
>
>> Von: Klaus Schmidinger <Klaus.Schmidinger@tvdr.de>
>> Betreff: Re: [vdr] vdr and aac support
>> An: vdr@linuxtv.org
>> Datum: Freitag, 14. Mai, 2010 16:13 Uhr
>> On 07.05.2010 09:53, Newsy Paper
>> wrote:
>> > Hi!
>> >
>> > there are some channels using aac for audio. I.e.
>> SABC1 at 23.5°East 10758 V 22000 8/9 DVB-S2
>> > Seems vdr doesn't support aac as no pid is entered
>> neither for apid nor for ddpid. I think xine should support
>> acc or doesn't it? So it should be no big deal do extend vdr
>> to support aac.
>>
>> Please try this and see if it makes any difference:
>>
>> --- pat.c       2010/03/27
>> 15:17:46     2.9
>> +++ pat.c       2010/05/14
>> 14:12:31
>> @@ -401,6 +401,7 @@
>>
>>            switch
>> (d->getDescriptorTag()) {
>>
>>              case
>> SI::AC3DescriptorTag:
>>
>>              case
>> SI::EnhancedAC3DescriptorTag:
>> +
>>             case
>> SI::AACDescriptorTag:
>>
>>
>>   dpid = esPid;
>>
>>
>>   ProcessCaDescriptors = true;
>>
>>
>>   break;
>>
>> --- eit.c       2010/01/08
>> 15:17:09     2.11
>> +++ eit.c       2010/05/14
>> 14:06:55
>> @@ -257,7 +257,7 @@
>>
>>   SI::ComponentDescriptor *cd =
>> (SI::ComponentDescriptor *)d;
>>
>>   uchar Stream = cd->getStreamContent();
>>
>>   uchar Type = cd->getComponentType();
>> -
>>    if (1 <= Stream && Stream <=
>> 4 && Type != 0) { // 1=video, 2=audio, 3=subtitles,
>> 4=AC3
>> +
>>    if (1 <= Stream && Stream <=
>> 6 && Type != 0) { // 1=MPEG2-video, 2=MPEG1-audio,
>> 3=subtitles, 4=AC3-audio, 5=H.264-video, 6=HEAAC-audio
>>
>>      if (!Components)
>>
>>         Components = new cComponents;
>>
>>      char buffer[Utf8BufSize(256)];
>>
>>
>> Klaus
>>
>> _______________________________________________
>> 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
>
  
Newsy Paper May 15, 2010, 6 p.m. UTC | #4
hi Luis,

seems like an ugly hack. Channel I'm receiving here has:
Stream_type: 15 (0x0f)  [= ISO/IEC 13818-7 Audio with ADTS transport sytax]

kind regards

Newspaperman


--- Luis Fernandes <telping@gmail.com> schrieb am Sa, 15.5.2010:

> Von: Luis Fernandes <telping@gmail.com>
> Betreff: Re: [vdr] vdr and aac support
> An: "VDR Mailing List" <vdr@linuxtv.org>
> Datum: Samstag, 15. Mai, 2010 17:40 Uhr
> hello everybody, in my case of he-aac
> streamtype 0x11 coming in, if
> you want to record or listen to xineliboutput i have to
> change in
> remux.c and pat.c in the following lines,
> 
> pat.c
> 
>   case 0x04: / / STREAMTYPE_13818_AUDIO
> + case 0x11: / / ISO/IEC 14496-3 Audio with LATM transport
> syntax
> 
> 
> thus adds the audio pid correctly
> 
> remux.c
> 
> for (int n = 0; Channel->Apid(n); n++) {
> -         i += MakeStream(buf
> + i, 0x04, Channel->Apid(n));
> +       i += MakeStream(buf + i,
> 0x11, Channel->Apid(n));
>          const char *Alang =
> Channel->Alang(n);
> 
>   case 0x04: / / STREAMTYPE_13818_AUDIO
> + case 0x11: / / ISO/IEC 14496-3 Audio with LATM transport
> syntax
> 
> 
> but this way I can not hear sound from other channels, only
> the
> channels with streamtype 0x11
> is there any way to identify the audio streamtype in this
> line so that
> the MakeStream (buf + i, streamaudiotype, Channel-> APID
> (n));
> 
> Excuse my English
> Best regards
> 
> 2010/5/15 Newsy Paper <newspaperman_germany@yahoo.com>:
> > thx Klaus for your patch, but seems like there's
> something missing. Perhaps in remux.c?
> >
> > DDpid and Apid are both 0
> > If I enter aac pid in ddpid field it's set back to 0
> again.
> >
> > kind regards
> >
> > Newspaperman
> >
> > --- Klaus Schmidinger <Klaus.Schmidinger@tvdr.de>
> schrieb am Fr, 14.5.2010:
> >
> >> Von: Klaus Schmidinger <Klaus.Schmidinger@tvdr.de>
> >> Betreff: Re: [vdr] vdr and aac support
> >> An: vdr@linuxtv.org
> >> Datum: Freitag, 14. Mai, 2010 16:13 Uhr
> >> On 07.05.2010 09:53, Newsy Paper
> >> wrote:
> >> > Hi!
> >> >
> >> > there are some channels using aac for audio.
> I.e.
> >> SABC1 at 23.5°East 10758 V 22000 8/9 DVB-S2
> >> > Seems vdr doesn't support aac as no pid is
> entered
> >> neither for apid nor for ddpid. I think xine
> should support
> >> acc or doesn't it? So it should be no big deal do
> extend vdr
> >> to support aac.
> >>
> >> Please try this and see if it makes any
> difference:
> >>
> >> --- pat.c       2010/03/27
> >> 15:17:46     2.9
> >> +++ pat.c       2010/05/14
> >> 14:12:31
> >> @@ -401,6 +401,7 @@
> >>
> >>            switch
> >> (d->getDescriptorTag()) {
> >>
> >>              case
> >> SI::AC3DescriptorTag:
> >>
> >>              case
> >> SI::EnhancedAC3DescriptorTag:
> >> +
> >>             case
> >> SI::AACDescriptorTag:
> >>
> >>
> >>   dpid = esPid;
> >>
> >>
> >>   ProcessCaDescriptors = true;
> >>
> >>
> >>   break;
> >>
> >> --- eit.c       2010/01/08
> >> 15:17:09     2.11
> >> +++ eit.c       2010/05/14
> >> 14:06:55
> >> @@ -257,7 +257,7 @@
> >>
> >>   SI::ComponentDescriptor *cd =
> >> (SI::ComponentDescriptor *)d;
> >>
> >>   uchar Stream = cd->getStreamContent();
> >>
> >>   uchar Type = cd->getComponentType();
> >> -
> >>    if (1 <= Stream && Stream <=
> >> 4 && Type != 0) { // 1=video, 2=audio,
> 3=subtitles,
> >> 4=AC3
> >> +
> >>    if (1 <= Stream && Stream <=
> >> 6 && Type != 0) { // 1=MPEG2-video,
> 2=MPEG1-audio,
> >> 3=subtitles, 4=AC3-audio, 5=H.264-video,
> 6=HEAAC-audio
> >>
> >>      if (!Components)
> >>
> >>         Components = new cComponents;
> >>
> >>      char buffer[Utf8BufSize(256)];
> >>
> >>
> >> Klaus
> >>
> >> _______________________________________________
> >> 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
> >
> 
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>
  

Patch

--- pat.c       2010/03/27 15:17:46     2.9
+++ pat.c       2010/05/14 14:12:31
@@ -401,6 +401,7 @@ 
                           switch (d->getDescriptorTag()) {
                             case SI::AC3DescriptorTag:
                             case SI::EnhancedAC3DescriptorTag:
+                            case SI::AACDescriptorTag:
                                  dpid = esPid;
                                  ProcessCaDescriptors = true;
                                  break;

--- eit.c       2010/01/08 15:17:09     2.11
+++ eit.c       2010/05/14 14:06:55
@@ -257,7 +257,7 @@ 
                  SI::ComponentDescriptor *cd = (SI::ComponentDescriptor *)d;
                  uchar Stream = cd->getStreamContent();
                  uchar Type = cd->getComponentType();
-                 if (1 <= Stream && Stream <= 4 && Type != 0) { // 1=video, 2=audio, 3=subtitles, 4=AC3
+                 if (1 <= Stream && Stream <= 6 && Type != 0) { // 1=MPEG2-video, 2=MPEG1-audio, 3=subtitles, 4=AC3-audio, 5=H.264-video, 6=HEAAC-audio
                     if (!Components)
                        Components = new cComponents;
                     char buffer[Utf8BufSize(256)];