[FFmpeg-devel] [PATCH]lavf/matroskadec: Set codec_tag also for audio codecs

Carl Eugen Hoyos cehoyos at ag.or.at
Fri Dec 11 09:32:23 CET 2015


On Friday 11 December 2015 02:29:53 am Michael Niedermayer wrote:
> On Thu, Dec 10, 2015 at 11:50:45PM +0100, Carl Eugen Hoyos wrote:
> > Hi!
> >
> > Attached patch is definitely a good idea imo, the mov demuxer also
> > sets codec_tag reading the same atom, for "A_MS/ACM" codec_tag is
> > already set.
> >
> > Please comment, Carl Eugen
> >
> >  matroskadec.c |    1 +
> >  1 file changed, 1 insertion(+)
> > 2304ec17547647dad8121a55cac95f099a8e6ef1  patchmkvaudiofourcc.diff
> > diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
> > index aad567a..95cebdd 100644
> > --- a/libavformat/matroskadec.c
> > +++ b/libavformat/matroskadec.c
> > @@ -2124,6 +2124,7 @@ static int matroska_parse_tracks(AVFormatContext
> > *s) }
> >          } else if (track->type == MATROSKA_TRACK_TYPE_AUDIO) {
> >              st->codec->codec_type  = AVMEDIA_TYPE_AUDIO;
> > +            st->codec->codec_tag   = fourcc;
> >              st->codec->sample_rate = track->audio.out_samplerate;
> >              st->codec->channels    = track->audio.channels;
> >              if (!st->codec->bits_per_coded_sample)
>
> this changes things like:
>  Stream #0:7(jpn): Audio: adpcm_ima_wav ([17][0][0][0] / 0x0011), 11025 Hz,
> 2 channels, s16p, 88 kb/s to
>  Stream #0:7(jpn): Audio: adpcm_ima_wav, 11025 Hz, 2 channels, s16p, 88
> kb/s
>
> in [CCCP]_Mega_Weird_Audio_Test.mkv
>
> is that intended ?

No, new patch attached.

Thank you, Carl Eugen
-------------- next part --------------
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index aad567a..b77e7e8 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -1853,6 +1853,7 @@ static int matroska_parse_tracks(AVFormatContext *s)
             if (ret < 0)
                 return ret;
             codec_id         = st->codec->codec_id;
+            fourcc           = st->codec->codec_tag;
             extradata_offset = FFMIN(track->codec_priv.size, 18);
         } else if (!strcmp(track->codec_id, "A_QUICKTIME")
                    && (track->codec_priv.size >= 86)
@@ -2124,6 +2125,7 @@ static int matroska_parse_tracks(AVFormatContext *s)
             }
         } else if (track->type == MATROSKA_TRACK_TYPE_AUDIO) {
             st->codec->codec_type  = AVMEDIA_TYPE_AUDIO;
+            st->codec->codec_tag   = fourcc;
             st->codec->sample_rate = track->audio.out_samplerate;
             st->codec->channels    = track->audio.channels;
             if (!st->codec->bits_per_coded_sample)


More information about the ffmpeg-devel mailing list