diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m index af8fe31367af339231261f453606f9ddcee880cf..0d854a18a389930abf6e0df94653a6f3940760a5 100644 --- a/libavdevice/avfoundation.m +++ b/libavdevice/avfoundation.m @@ -98,6 +98,7 @@ typedef struct int capture_cursor; int capture_mouse_clicks; int capture_raw_data; + int drop_late_frames; int video_is_muxed; int list_devices; @@ -496,7 +497,7 @@ static int add_video_device(AVFormatContext *s, AVCaptureDevice *video_device) [ctx->video_output setVideoSettings:capture_dict]; } - [ctx->video_output setAlwaysDiscardsLateVideoFrames:YES]; + [ctx->video_output setAlwaysDiscardsLateVideoFrames:ctx->drop_late_frames]; ctx->avf_delegate = [[AVFFrameReceiver alloc] initWithContext:ctx]; @@ -1135,6 +1136,7 @@ static const AVOption options[] = { { "capture_cursor", "capture the screen cursor", offsetof(AVFContext, capture_cursor), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, { "capture_mouse_clicks", "capture the screen mouse clicks", offsetof(AVFContext, capture_mouse_clicks), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, { "capture_raw_data", "capture the raw data from device connection", offsetof(AVFContext, capture_raw_data), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, + { "drop_late_frames", "drop frames that are available later than expected", offsetof(AVFContext, drop_late_frames), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, { NULL }, };