[MPlayer-dev-eng] incoming/Vorbis_in_MP4_lavf_fail.mp4

Reimar Döffinger Reimar.Doeffinger at stud.uni-karlsruhe.de
Sat Mar 17 15:03:17 CET 2007


Hello,
On Sat, Mar 17, 2007 at 12:39:59AM +0100, Baptiste Coudurier wrote:
> Michael Niedermayer wrote:
> > On Fri, Mar 16, 2007 at 06:36:46PM +0100, Reimar Döffinger wrote:
> >> On Fri, Mar 16, 2007 at 03:56:58PM +0100, Nico Sabbi wrote:
> >>> Compn wrote:
> >>>> ffplay and mplayer detects audio correctly
> >>>>
> >>>> mplayer -demuxer lavf does not.
> >>>>
> >>>> adding format 0x6134706D to audiocodec vorbis allows it to play
> >>>> but its still trying faad first.
> >>>>
> >>>> Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding)
> >>>> FAAD: Failed to initialize the decoder!
> >>>> ADecoder init failed :(
> >>>> ADecoder init failed :(
> >>>> Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
> >>>> AUDIO: 48000 Hz, 2 ch, s16le, 0.0 kbit/0.00% (ratio: 0->192000)
> >>>> Selected audio codec: [ffvorbis] afm: ffmpeg (FFmpeg Vorbis decoder)
> >>>>
> >>> try with svn blame who broke it, please.
> >> I think this was never fixed. The problem IIRC is that lavf demuxer uses
> >> a different mov atom to detect the format, but that one only contains
> >> "mp4a".
> > 
> > if codec_tag is mp4a then this is wrong, codec_tag should contain the thing
> > which is looked up in ff_mov_obj_type
> > 
> > grep ff_mov_obj_type in lavf/mov.c set codec_tag to it run regression tests
> > check if this fixes the mplayer+lavf problem send patch
> 
> Humm well it makes sense for mp4, not sure for mov, dunno if other
> codecs use "mp4a" as stsd tag in mov but stores something else and use
> "esds" atom, and tag will be a simple int, but I've no real objection.

Hm. Attached patch fixes the problem. You could of course check against
codec_movaudio_tags if codec_tag still matches codec_id and only unset
tag if it doesn't.

Greetings,
Reimar Döffinger
-------------- next part --------------
Index: libavformat/mov.c
===================================================================
--- libavformat/mov.c	(revision 8422)
+++ libavformat/mov.c	(working copy)
@@ -382,6 +382,7 @@
         sc->esds.avg_bitrate = get_be32(pb);
 
         st->codec->codec_id= codec_get_id(ff_mov_obj_type, sc->esds.object_type_id);
+        st->codec->codec_tag= 0;
         dprintf(c->fc, "esds object type id %d\n", sc->esds.object_type_id);
         len = mov_mp4_read_descr(c, pb, &tag);
         if (tag == MP4DecSpecificDescrTag) {


More information about the MPlayer-dev-eng mailing list