aboutsummaryrefslogtreecommitdiffstats
path: root/ffmpeg.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2003-10-21 10:55:24 +0000
committerMichael Niedermayer <michaelni@gmx.at>2003-10-21 10:55:24 +0000
commit8831db5ca231f3c63177c7b916a7753534bbb234 (patch)
treeb979dfe8a50270768f44a11d0e213d1e98e67579 /ffmpeg.c
parent33a6984b8c85bead476f9db24ecdcda6dae71a57 (diff)
downloadffmpeg-8831db5ca231f3c63177c7b916a7753534bbb234.tar.gz
start time hack by (devik <devik at cdi dot cz>)
Originally committed as revision 2408 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'ffmpeg.c')
-rw-r--r--ffmpeg.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index a1b73ae3b7..7ac8228a74 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -133,6 +133,7 @@ static int audio_channels = 1;
static int audio_codec_id = CODEC_ID_NONE;
static int64_t recording_time = 0;
+static int64_t start_time = 0;
static int file_overwrite = 0;
static char *str_title = NULL;
static char *str_author = NULL;
@@ -1255,11 +1256,12 @@ static int av_encode(AVFormatContext **output_files,
if (ist->discard)
goto discard_packet;
- // printf("read #%d.%d size=%d\n", ist->file_index, ist->index, pkt.size);
+ //fprintf(stderr,"read #%d.%d size=%d\n", ist->file_index, ist->index, pkt.size);
len = pkt.size;
ptr = pkt.data;
while (len > 0) {
+ int ipts;
/* decode the packet if needed */
data_buf = NULL; /* fail safe */
data_size = 0;
@@ -1368,8 +1370,12 @@ static int av_encode(AVFormatContext **output_files,
}
}
#endif
- /* transcode raw format, encode packets and output them */
+ ipts = (double)ist->pts * is->pts_num / is->pts_den;
+ //fprintf(stderr,"decoded ipts=%ld %d\n",ipts,ist->pts);
+ /* if output time reached then transcode raw format,
+ encode packets and output them */
+ if (start_time == 0 || ipts > (start_time / 1000000.0))
for(i=0;i<nb_ostreams;i++) {
int frame_size;
@@ -2028,6 +2034,11 @@ static void opt_recording_time(const char *arg)
recording_time = parse_date(arg, 1);
}
+static void opt_start_time(const char *arg)
+{
+ start_time = parse_date(arg, 1);
+}
+
static void opt_input_file(const char *filename)
{
AVFormatContext *ic;
@@ -2663,6 +2674,7 @@ const OptionDef options[] = {
{ "y", OPT_BOOL, {(void*)&file_overwrite}, "overwrite output files" },
{ "map", HAS_ARG | OPT_EXPERT, {(void*)opt_map}, "set input stream mapping", "file:stream" },
{ "t", HAS_ARG, {(void*)opt_recording_time}, "set the recording time", "duration" },
+ { "start", HAS_ARG, {(void*)opt_start_time}, "set the start time offset", "time_off" },
{ "title", HAS_ARG | OPT_STRING, {(void*)&str_title}, "set the title", "string" },
{ "author", HAS_ARG | OPT_STRING, {(void*)&str_author}, "set the author", "string" },
{ "copyright", HAS_ARG | OPT_STRING, {(void*)&str_copyright}, "set the copyright", "string" },