[FFmpeg-devel] [PATCH] a couple of updates for MPEGTS

Måns Rullgård mans
Tue Feb 12 01:42:35 CET 2008


Nico Sabbi <Nicola.Sabbi at poste.it> writes:

> In incoming there are a couple of interesting samples: one is a trailer
> of resident evil that uses 0x82 as stream_type to identify DCA
> (I don't know in what system this mapping is defined) ;

I'd obviously like to know what system uses this value.  The sample
has a Bluray registration descriptor, so it maybe that is where it
comes from.  The PS3 refuses to recognise any audio in the file, but
that need not mean anything.

Otherwise I have only the standard objection about non-standard
features.  Randomly assigning codes in the private range to codecs
will sooner or later lead to a clash.  In this case, the registration
descriptor could probably be used to identify the codec mapping in a
safer manner.  It's hard to say for sure without access to the Bluray
spec.

Given the amount of work required to implement this properly, and that
we so far only have this sample using stream type 0x82, I reckon we
can still add this to the list.

> other (search *latm*) contain AAC in LATM over LOAS syntax,
> that mplayer's libfaad (or libfaad with a patch I posted to faad-devel)
> can decode.

I get the feeling this ought really be properly demuxed.  Then
anything expecting an AAC elementary stream would cope with it.  I am
definitely against labelling anything other than proper AAC with
CODEC_ID_AAC.

> Patch attached
>
> Index: libavformat/mpegts.c
> ===================================================================
> --- libavformat/mpegts.c	(revisione 11620)
> +++ libavformat/mpegts.c	(copia locale)
> @@ -915,6 +915,7 @@
>          codec_id = CODEC_ID_VC1;
>          break;
>      case STREAM_TYPE_AUDIO_AAC:
> +    case STREAM_TYPE_AUDIO_AAC_LATM:
>          codec_type = CODEC_TYPE_AUDIO;
>          codec_id = CODEC_ID_AAC;
>          break;

See above.

> @@ -923,6 +924,7 @@
>          codec_id = CODEC_ID_AC3;
>          break;
>      case STREAM_TYPE_AUDIO_DTS:
> +    case STREAM_TYPE_AUDIO_DTS2:
>          codec_type = CODEC_TYPE_AUDIO;
>          codec_id = CODEC_ID_DTS;
>          break;

OK, reluctantly.

> Index: libavformat/mpegts.h
> ===================================================================
> --- libavformat/mpegts.h	(revisione 11620)
> +++ libavformat/mpegts.h	(copia locale)
> @@ -49,12 +49,14 @@
>  #define STREAM_TYPE_PRIVATE_SECTION 0x05
>  #define STREAM_TYPE_PRIVATE_DATA    0x06
>  #define STREAM_TYPE_AUDIO_AAC       0x0f
> +#define STREAM_TYPE_AUDIO_AAC_LATM  0x11
>  #define STREAM_TYPE_VIDEO_MPEG4     0x10
>  #define STREAM_TYPE_VIDEO_H264      0x1b
>  #define STREAM_TYPE_VIDEO_VC1       0xea

Adding this macro is of course harmless.  Feel free to do so if you
like.

>  #define STREAM_TYPE_AUDIO_AC3       0x81
>  #define STREAM_TYPE_AUDIO_DTS       0x8a
> +#define STREAM_TYPE_AUDIO_DTS2      0x82

Maybe these should be sorted numerically.  Or maybe not... I can't
decide.

-- 
M?ns Rullg?rd
mans at mansr.com




More information about the ffmpeg-devel mailing list