diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2008-01-26 20:07:30 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2008-01-26 20:07:30 +0000 |
commit | ee6e2dbebffc220ac24a936c9777b067e2474066 (patch) | |
tree | 3701f0e74cc0892d20ebf2085e8fcdc90d3aefb3 /libavformat | |
parent | 0bc4728e3b5e000682c7263419df4593d165eab7 (diff) | |
download | ffmpeg-ee6e2dbebffc220ac24a936c9777b067e2474066.tar.gz |
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
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/mov.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c index bb9b3f6beb..3f919f1b9a 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_id<entries; pseudo_stream_id++) { //Parsing Sample description table enum CodecID id; MOV_atom_t a = { 0, 0, 0 }; offset_t start_pos = url_ftell(pb); @@ -607,6 +608,7 @@ static int mov_read_stsd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom) url_fskip(pb, size - (url_ftell(pb) - start_pos)); continue; } + sc->pseudo_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; |