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