From: Michael Niedermayer Date: Sat, 26 Jan 2008 20:07:30 +0000 (+0000) Subject: Only export packets which belong to the existing AVStream. X-Git-Tag: v0.5~6346 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ee6e2dbebffc220ac24a936c9777b067e2474066;p=platform%2Fupstream%2Flibav.git Only export packets which belong to the existing AVStream. To export the others separate AVStreams must be created! Originally committed as revision 11622 to svn://svn.ffmpeg.org/ffmpeg/trunk --- diff --git a/libavformat/mov.c b/libavformat/mov.c index bb9b3f6..3f919f1 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -107,6 +107,7 @@ typedef struct MOVStreamContext { unsigned int bytes_per_frame; unsigned int samples_per_frame; int dv_audio_container; + int pseudo_stream_id; } MOVStreamContext; typedef struct MOVContext { @@ -581,7 +582,7 @@ static int mov_read_stsd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom) int color_dec; int color_greyscale; const uint8_t *color_table; - int j; + int j, pseudo_stream_id; unsigned char r, g, b; get_byte(pb); /* version */ @@ -589,7 +590,7 @@ static int mov_read_stsd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom) entries = get_be32(pb); - while(entries--) { //Parsing Sample description table + for(pseudo_stream_id=0; pseudo_stream_idpseudo_stream_id= pseudo_stream_id; st->codec->codec_tag = format; id = codec_get_id(codec_movaudio_tags, format); @@ -1345,6 +1347,7 @@ static void mov_build_index(MOVContext *mov, AVStream *st) dprintf(mov->fc, "AVIndex stream %d, sample %d, offset %"PRIx64", dts %"PRId64", " "size %d, distance %d, keyframe %d\n", st->index, current_sample, current_offset, current_dts, sample_size, distance, keyframe); + if(sc->sample_to_chunk[stsc_index].id - 1 == sc->pseudo_stream_id) av_add_index_entry(st, current_offset, current_dts, sample_size, distance, keyframe ? AVINDEX_KEYFRAME : 0); current_offset += sample_size;