[FFmpeg-devel] [PATCH] MPEG-TS demuxer: Report 4cc in codec_tag field instead of SMTPE RID

Måns Rullgård mans
Mon Aug 31 19:42:59 CEST 2009

Reimar D?ffinger <Reimar.Doeffinger at gmx.de> writes:

> On Mon, Aug 31, 2009 at 09:18:29AM -0700, Baptiste Coudurier wrote:
>> On 8/31/2009 1:27 AM, Reimar D?ffinger wrote:
>> > On Mon, Aug 31, 2009 at 10:56:18AM +0300, Christian P. Schmidt wrote:
>> >> I know that mpeg-ts streams to not support 4cc tags for the codecs.
>> >> However, the mpeg-ts demuxer currently copies the registration ID into
>> >> the codec's tag field, which in my opinion is worse than leaving the
>> >> field empty.
>> >>
>> >> As an easy workaround the current tables for codec detection could be
>> >> expanded to hold the 4cc codes as used in riff.c and return those in the
>> >> codec_tag field.
>> >>
>> >> There are two codecs that do not have an official 4cc tag, namely
>> >> bluray-pcm and E-AC-3. I'd go with mplayer's definitions for those, BPCM
>> >> and EAC3.
>> >
>> > The codec_tag is not really supposed to be a fourcc, if there is no
>> > stream-specific tag that (more or less uniquely) indicates the codec used
>> > in the file it should be 0. Obviously it shouldn't be "random" nonsense
>> > like it seems to be currently either though.
>> Huh, it's not "random" nonsense, it's the registration descriptor if 
>> present.
> Well, with DVB-T receptions I know I got something else about each try
> (sorry, haven't properly debugged it, nor recorded enough samples).
> And HDMV for LPCM audio _and_ and some video codecs is not exactly a
> "tag that (more or less uniquely) indicates the codec".
> I don't mind much, but I am having some doubts that the thing that
> currently ends up in codec_tag belongs there.

If anything, codec_tag should be set to stream_type from the PMT.  The
problem is that the meaning of stream_type values in the private range
(0x80 -- 0xff) depends on the registration descriptor and possibly
other private descriptors.  There is simply no way to uniquely
identify, in the general case, an MPEG-TS stream in 32 bits.  The
correct solution is to make the MPEG-TS demuxer figure out the correct
codec_id value based on all available information.  Then apps will not
need to care about codec_tag.

M?ns Rullg?rd
mans at mansr.com

More information about the ffmpeg-devel mailing list