diff -Naur a/ext/libav/gstavdemux.c b/ext/libav/gstavdemux.c --- a/ext/libav/gstavdemux.c 2019-04-19 15:16:40.000000000 +0600 +++ b/ext/libav/gstavdemux.c 2023-09-04 20:34:31.455843712 +0600 @@ -483,7 +483,11 @@ GST_LOG_OBJECT (demux, "keyframeidx: %d", keyframeidx); if (keyframeidx >= 0) { +#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(58,78,0) + fftarget = avformat_index_get_entry (stream, keyframeidx)->timestamp; +#else fftarget = stream->index_entries[keyframeidx].timestamp; +#endif target = gst_ffmpeg_time_ff_to_gst (fftarget, stream->time_base); GST_LOG_OBJECT (demux, diff -Naur a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c --- a/ext/libav/gstavviddec.c 2019-04-19 15:16:40.000000000 +0600 +++ b/ext/libav/gstavviddec.c 2023-09-04 20:33:44.865144903 +0600 @@ -39,7 +39,6 @@ #define DEFAULT_LOWRES 0 #define DEFAULT_SKIPFRAME 0 #define DEFAULT_DIRECT_RENDERING TRUE -#define DEFAULT_DEBUG_MV FALSE #define DEFAULT_MAX_THREADS 0 #define DEFAULT_OUTPUT_CORRUPT TRUE #define REQUIRED_POOL_MAX_BUFFERS 32 @@ -223,10 +222,14 @@ g_param_spec_boolean ("direct-rendering", "Direct Rendering", "Enable direct rendering", DEFAULT_DIRECT_RENDERING, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); +#ifndef GST_REMOVE_DEPRECATED g_object_class_install_property (gobject_class, PROP_DEBUG_MV, g_param_spec_boolean ("debug-mv", "Debug motion vectors", - "Whether libav should print motion vectors on top of the image", - DEFAULT_DEBUG_MV, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + "Whether to print motion vectors on top of the image " + "(deprecated, non-functional)", FALSE, + G_PARAM_DEPRECATED | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); +#endif + g_object_class_install_property (gobject_class, PROP_OUTPUT_CORRUPT, g_param_spec_boolean ("output-corrupt", "Output corrupt buffers", "Whether libav should output frames even if corrupted", @@ -267,7 +270,6 @@ ffmpegdec->opened = FALSE; ffmpegdec->skip_frame = ffmpegdec->lowres = 0; ffmpegdec->direct_rendering = DEFAULT_DIRECT_RENDERING; - ffmpegdec->debug_mv = DEFAULT_DEBUG_MV; ffmpegdec->max_threads = DEFAULT_MAX_THREADS; ffmpegdec->output_corrupt = DEFAULT_OUTPUT_CORRUPT; @@ -484,10 +486,6 @@ ffmpegdec->context->lowres = ffmpegdec->lowres; ffmpegdec->context->skip_frame = ffmpegdec->skip_frame; - /* ffmpeg can draw motion vectors on top of the image (not every decoder - * supports it) */ - ffmpegdec->context->debug_mv = ffmpegdec->debug_mv; - { GstQuery *query; gboolean is_live; @@ -2134,10 +2132,11 @@ case PROP_DIRECT_RENDERING: ffmpegdec->direct_rendering = g_value_get_boolean (value); break; +#ifndef GST_REMOVE_DEPRECATED case PROP_DEBUG_MV: - ffmpegdec->debug_mv = ffmpegdec->context->debug_mv = - g_value_get_boolean (value); + /* non-functional */ break; +#endif case PROP_MAX_THREADS: ffmpegdec->max_threads = g_value_get_int (value); break; @@ -2166,9 +2165,11 @@ case PROP_DIRECT_RENDERING: g_value_set_boolean (value, ffmpegdec->direct_rendering); break; +#ifndef GST_REMOVE_DEPRECATED case PROP_DEBUG_MV: - g_value_set_boolean (value, ffmpegdec->context->debug_mv); + g_value_set_boolean (value, FALSE); break; +#endif case PROP_MAX_THREADS: g_value_set_int (value, ffmpegdec->max_threads); break; diff -Naur a/ext/libav/gstavviddec.h b/ext/libav/gstavviddec.h --- a/ext/libav/gstavviddec.h 2019-04-19 15:16:40.000000000 +0600 +++ b/ext/libav/gstavviddec.h 2023-09-04 20:31:43.240931157 +0600 @@ -66,7 +66,6 @@ enum AVDiscard skip_frame; gint lowres; gboolean direct_rendering; - gboolean debug_mv; int max_threads; gboolean output_corrupt;