vdr and aac support

Message ID 4BEFCF35.7070009@tvdr.de
State New
Headers

Commit Message

Klaus Schmidinger May 16, 2010, 10:55 a.m. UTC
  On 15.05.2010 20:00, Newsy Paper wrote:
> 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]

If you do this instead:



does this put the proper PID into the APID section?
This may still not work with recordings, but I first want to know
whether a proper PID is detected that way.

Klaus

> --- 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
  

Patch

--- pat.c       2010/03/27 15:17:46     2.9
+++ pat.c       2010/05/16 10:53:46
@@ -358,6 +358,8 @@ 
                       break;
               case 3: // STREAMTYPE_11172_AUDIO
               case 4: // STREAMTYPE_13818_AUDIO
+              case 0x0F: // ISO/IEC 13818-7 Audio with ADTS transport sytax
+              case 0x11: // ISO/IEC 14496-3 Audio with LATM transport syntax
                       {
                       if (NumApids < MAXAPIDS) {
                          Apids[NumApids] = esPid;