You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
ffmpeg: Make CFR frame drop threshold user adjustable
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
4
ffmpeg.c
4
ffmpeg.c
@@ -962,7 +962,9 @@ static void do_video_out(AVFormatContext *s,
|
|||||||
}
|
}
|
||||||
case VSYNC_CFR:
|
case VSYNC_CFR:
|
||||||
// FIXME set to 0.5 after we fix some dts/pts bugs like in avidec.c
|
// FIXME set to 0.5 after we fix some dts/pts bugs like in avidec.c
|
||||||
if (delta < -1.1)
|
if (frame_drop_threshold && delta < frame_drop_threshold && ost->frame_number) {
|
||||||
|
nb_frames = 0;
|
||||||
|
} else if (delta < -1.1)
|
||||||
nb_frames = 0;
|
nb_frames = 0;
|
||||||
else if (delta > 1.1) {
|
else if (delta > 1.1) {
|
||||||
nb_frames = lrintf(delta);
|
nb_frames = lrintf(delta);
|
||||||
|
1
ffmpeg.h
1
ffmpeg.h
@@ -482,6 +482,7 @@ extern float dts_error_threshold;
|
|||||||
extern int audio_volume;
|
extern int audio_volume;
|
||||||
extern int audio_sync_method;
|
extern int audio_sync_method;
|
||||||
extern int video_sync_method;
|
extern int video_sync_method;
|
||||||
|
extern float frame_drop_threshold;
|
||||||
extern int do_benchmark;
|
extern int do_benchmark;
|
||||||
extern int do_benchmark_all;
|
extern int do_benchmark_all;
|
||||||
extern int do_deinterlace;
|
extern int do_deinterlace;
|
||||||
|
@@ -86,6 +86,7 @@ float dts_error_threshold = 3600*30;
|
|||||||
int audio_volume = 256;
|
int audio_volume = 256;
|
||||||
int audio_sync_method = 0;
|
int audio_sync_method = 0;
|
||||||
int video_sync_method = VSYNC_AUTO;
|
int video_sync_method = VSYNC_AUTO;
|
||||||
|
float frame_drop_threshold = 0;
|
||||||
int do_deinterlace = 0;
|
int do_deinterlace = 0;
|
||||||
int do_benchmark = 0;
|
int do_benchmark = 0;
|
||||||
int do_benchmark_all = 0;
|
int do_benchmark_all = 0;
|
||||||
@@ -2873,6 +2874,8 @@ const OptionDef options[] = {
|
|||||||
" \"dv\", \"dv50\", \"pal-vcd\", \"ntsc-svcd\", ...)", "type" },
|
" \"dv\", \"dv50\", \"pal-vcd\", \"ntsc-svcd\", ...)", "type" },
|
||||||
{ "vsync", HAS_ARG | OPT_EXPERT, { opt_vsync },
|
{ "vsync", HAS_ARG | OPT_EXPERT, { opt_vsync },
|
||||||
"video sync method", "" },
|
"video sync method", "" },
|
||||||
|
{ "frame_drop_threshold", HAS_ARG | OPT_FLOAT | OPT_EXPERT, { &frame_drop_threshold },
|
||||||
|
"frame drop threshold", "" },
|
||||||
{ "async", HAS_ARG | OPT_INT | OPT_EXPERT, { &audio_sync_method },
|
{ "async", HAS_ARG | OPT_INT | OPT_EXPERT, { &audio_sync_method },
|
||||||
"audio sync method", "" },
|
"audio sync method", "" },
|
||||||
{ "adrift_threshold", HAS_ARG | OPT_FLOAT | OPT_EXPERT, { &audio_drift_threshold },
|
{ "adrift_threshold", HAS_ARG | OPT_FLOAT | OPT_EXPERT, { &audio_drift_threshold },
|
||||||
|
Reference in New Issue
Block a user