summaryrefslogtreecommitdiff
path: root/ffmpeg.c
diff options
context:
space:
mode:
authorWolfram Gloger <wmglo@dent.med.uni-muenchen.de>2010-02-08 09:04:06 +0000
committerBenoit Fouet <benoit.fouet@free.fr>2010-02-08 09:04:06 +0000
commit55a7e946f6558eb36296fbd14a04d675bebe91ea (patch)
tree56181c78cb7fc5f104ebeeef210d786de3ba2507 /ffmpeg.c
parent8a3b90686d451e9ed67794e14be42eba47a0b160 (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
Diffstat (limited to 'ffmpeg.c')
-rw-r--r--ffmpeg.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 720f8172ff..fe275ac8b8 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -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) {