diff options
author | Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> | 2010-02-08 12:04:06 +0300 |
---|---|---|
committer | Benoit Fouet <benoit.fouet@free.fr> | 2010-02-08 12:04:06 +0300 |
commit | 55a7e946f6558eb36296fbd14a04d675bebe91ea (patch) | |
tree | 56181c78cb7fc5f104ebeeef210d786de3ba2507 | |
parent | 8a3b90686d451e9ed67794e14be42eba47a0b160 (diff) |
Stop reading input file when -t option value is reached.
Patch by Wolfram Gloger wmglo (chez) dent med uni (minus) muenchen de
Originally committed as revision 21687 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | ffmpeg.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -301,6 +301,7 @@ typedef struct AVInputStream { int64_t pts; /* current pts */ int is_start; /* is 1 at the start and after a discontinuity */ int showed_multi_packet_warning; + int is_past_recording_time; } AVInputStream; typedef struct AVInputFile { @@ -2221,7 +2222,7 @@ static int av_encode(AVFormatContext **output_files, ost = ost_table[i]; os = output_files[ost->file_index]; ist = ist_table[ost->source_index]; - if(no_packet[ist->file_index]) + if(ist->is_past_recording_time || no_packet[ist->file_index]) continue; opts = ost->st->pts.val * av_q2d(ost->st->time_base); ipts = (double)ist->pts; @@ -2318,8 +2319,10 @@ static int av_encode(AVFormatContext **output_files, } /* finish if recording time exhausted */ - if (pkt.pts * av_q2d(ist->st->time_base) >= (recording_time / 1000000.0)) + if (pkt.pts * av_q2d(ist->st->time_base) >= (recording_time / 1000000.0)) { + ist->is_past_recording_time = 1; goto discard_packet; + } //fprintf(stderr,"read #%d.%d size=%d\n", ist->file_index, ist->index, pkt.size); if (output_packet(ist, ist_index, ost_table, nb_ostreams, &pkt) < 0) { |