Browse Source

Demux all parts of concatenated H.264.

We may or may not be able to play the latter parts
but not demuxing at all seems like the worst possible behaviour.
Fixes playback of e.g.
http://playlist.yahoo.com/makeplaylist.dll?sid=128114687&sdm=web&pt=rd
As a proper solution either multiple video streams should
be exported or side data should be used to update extradata
if necessary.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
tags/n0.11
Reimar Döffinger 13 years ago
parent
commit
34751f8313
1 changed files with 1 additions and 2 deletions
  1. +1
    -2
      libavformat/mov.c

+ 1
- 2
libavformat/mov.c View File

@@ -1150,14 +1150,13 @@ int ff_mov_read_stsd_entries(MOVContext *c, AVIOContext *pb, int entries)
/* Multiple fourcc, we skip JPEG. This is not correct, we should /* Multiple fourcc, we skip JPEG. This is not correct, we should
* export it as a separate AVStream but this needs a few changes * export it as a separate AVStream but this needs a few changes
* in the MOV demuxer, patch welcome. */ * in the MOV demuxer, patch welcome. */
multiple_stsd:
av_log(c->fc, AV_LOG_WARNING, "multiple fourcc not supported\n"); av_log(c->fc, AV_LOG_WARNING, "multiple fourcc not supported\n");
avio_skip(pb, size - (avio_tell(pb) - start_pos)); avio_skip(pb, size - (avio_tell(pb) - start_pos));
continue; continue;
} }
/* we cannot demux concatenated h264 streams because of different extradata */ /* we cannot demux concatenated h264 streams because of different extradata */
if (st->codec->codec_tag && st->codec->codec_tag == AV_RL32("avc1")) if (st->codec->codec_tag && st->codec->codec_tag == AV_RL32("avc1"))
goto multiple_stsd;
av_log(c->fc, AV_LOG_WARNING, "Concatenated H.264 might not play corrently.\n");
sc->pseudo_stream_id = st->codec->codec_tag ? -1 : pseudo_stream_id; sc->pseudo_stream_id = st->codec->codec_tag ? -1 : pseudo_stream_id;
sc->dref_id= dref_id; sc->dref_id= dref_id;




Loading…
Cancel
Save