1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

start time hack by (devik <devik at cdi dot cz>)

Originally committed as revision 2408 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer 2003-10-21 10:55:24 +00:00
parent 33a6984b8c
commit 8831db5ca2

View File

@ -133,6 +133,7 @@ static int audio_channels = 1;
static int audio_codec_id = CODEC_ID_NONE; static int audio_codec_id = CODEC_ID_NONE;
static int64_t recording_time = 0; static int64_t recording_time = 0;
static int64_t start_time = 0;
static int file_overwrite = 0; static int file_overwrite = 0;
static char *str_title = NULL; static char *str_title = NULL;
static char *str_author = NULL; static char *str_author = NULL;
@ -1255,11 +1256,12 @@ static int av_encode(AVFormatContext **output_files,
if (ist->discard) if (ist->discard)
goto discard_packet; 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; len = pkt.size;
ptr = pkt.data; ptr = pkt.data;
while (len > 0) { while (len > 0) {
int ipts;
/* decode the packet if needed */ /* decode the packet if needed */
data_buf = NULL; /* fail safe */ data_buf = NULL; /* fail safe */
data_size = 0; data_size = 0;
@ -1368,8 +1370,12 @@ static int av_encode(AVFormatContext **output_files,
} }
} }
#endif #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++) { for(i=0;i<nb_ostreams;i++) {
int frame_size; int frame_size;
@ -2028,6 +2034,11 @@ static void opt_recording_time(const char *arg)
recording_time = parse_date(arg, 1); 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) static void opt_input_file(const char *filename)
{ {
AVFormatContext *ic; AVFormatContext *ic;
@ -2663,6 +2674,7 @@ const OptionDef options[] = {
{ "y", OPT_BOOL, {(void*)&file_overwrite}, "overwrite output files" }, { "y", OPT_BOOL, {(void*)&file_overwrite}, "overwrite output files" },
{ "map", HAS_ARG | OPT_EXPERT, {(void*)opt_map}, "set input stream mapping", "file:stream" }, { "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" }, { "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" }, { "title", HAS_ARG | OPT_STRING, {(void*)&str_title}, "set the title", "string" },
{ "author", HAS_ARG | OPT_STRING, {(void*)&str_author}, "set the author", "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" }, { "copyright", HAS_ARG | OPT_STRING, {(void*)&str_copyright}, "set the copyright", "string" },