[Ffmpeg-devel] [PATCH] DVR-MS probe audio format - was DVR-MS bug (MP2 decoding)
John Donaghy
johnfdonaghy
Wed Mar 14 20:47:10 CET 2007
> > if (type == CODEC_TYPE_AUDIO) {
> > get_wav_header(pb, st->codec, type_specific_size);
> > + if (test_for_ext_stream_audio) {
> > + // codec_id is unreliable in dvr_ms files
> > + // set it later by probing stream
> > + st->codec->codec_id = -1;
>
> wont this break EVERY audio format except mp3 and ac3?
Maybe - I'm not sure if there's any other way that
'test_for_ext_stream_audio' could be 'true' at this point. To be safer
I could have defined a new flag that is set to 'true' only when the
dvr-ms audio stream header is detected in the extended stream header
because that is the only header with the problem. Then I would use the
new flag in the above 'if' statement instead. (According to M$ dvr-ms
audio is only ever either MP2 or AC3 because that is how it is
broadcast.)
> > + s->streams[stream_num]->codec->codec_tag = 0;
> > + av_free(pd.buf);
> > +
> > + url_fseek(&s->pb, pos, SEEK_SET);
> > + asf_reset_header(s);
>
> uhm, i dont think this will work ...
> try ffmpeg -f asf - test.avi <in.asf
Do you mean setting the codec_tag to zero wont work? If so then you're
right - it only worked in mplayer because the lavf demuxer handles the
case. How about this line instead which appears to work:
s->streams[stream_num]->codec->codec_tag =
codec_get_wav_tag(s->streams[stream_num]->codec->codec_id);
("Work" is an exaguration though because I get this message with or
without my patch when I run ffmpeg -f asf test.avi -i dvr-ms-file:
Stream #0.1: Video: mpeg2video, yuv420p, 720x576, 15000 kb/s, 25.00 fps(r)
picture size invalid (0x0)
)
>
> you could call a probe routine like that from av_find_stream_info() which
> will take care of buffering all packets for you
>
Are you suggesting extending av_find_stream_info to generally handle
the case where the audio codec is unknown by probing it and
attempting to identify it that way?
John
More information about the ffmpeg-devel
mailing list