Mercurial > libavformat.hg
changeset 2967:2fc866d3614f libavformat
Only export packets which belong to the existing AVStream.
To export the others separate AVStreams must be created!
author | michael |
---|---|
date | Sat, 26 Jan 2008 20:07:30 +0000 |
parents | 354c859bbf66 |
children | bd458b341e40 |
files | mov.c |
diffstat | 1 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mov.c Sat Jan 26 19:50:04 2008 +0000 +++ b/mov.c Sat Jan 26 20:07:30 2008 +0000 @@ -107,6 +107,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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;