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:
parent
33a6984b8c
commit
8831db5ca2
16
ffmpeg.c
16
ffmpeg.c
@ -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" },
|
||||||
|
Loading…
Reference in New Issue
Block a user