[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