From e3cf542215519f882b7570a4b59aad75a8d2d27a Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Tue, 16 Feb 2016 16:32:38 +0100 Subject: avcfg: rc-min-rate and rc-max-rate are now 64bit integers Switch the gobject properties and internal handling to support that --- ext/libav/gstavcfg.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/ext/libav/gstavcfg.c b/ext/libav/gstavcfg.c index d38cce1..a361994 100644 --- a/ext/libav/gstavcfg.c +++ b/ext/libav/gstavcfg.c @@ -513,13 +513,19 @@ gst_ffmpeg_cfg_init (void) gst_ffmpeg_add_pspec (pspec, config.rc_buffer_aggressivity, FALSE, mpeg, NULL); +#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT (57, 3, 0) pspec = g_param_spec_int ("rc-max-rate", "Ratecontrol Maximum Bitrate", "Ratecontrol Maximum Bitrate", 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); +#else + pspec = g_param_spec_int64 ("rc-max-rate", "Ratecontrol Maximum Bitrate", + "Ratecontrol Maximum Bitrate", 0, G_MAXINT64, 0, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); +#endif gst_ffmpeg_add_pspec (pspec, config.rc_max_rate, FALSE, mpeg, NULL); - pspec = g_param_spec_int ("rc-min-rate", "Ratecontrol Minimum Bitrate", - "Ratecontrol Minimum Bitrate", 0, G_MAXINT, 0, + pspec = g_param_spec_int64 ("rc-min-rate", "Ratecontrol Minimum Bitrate", + "Ratecontrol Minimum Bitrate", 0, G_MAXINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); gst_ffmpeg_add_pspec (pspec, config.rc_min_rate, FALSE, mpeg, NULL); @@ -770,6 +776,15 @@ gst_ffmpeg_cfg_install_property (GstFFMpegVidEncClass * klass, guint base) : pint->default_value, pspec->flags); break; } + case G_TYPE_INT64:{ + GParamSpecInt64 *pint = G_PARAM_SPEC_INT64 (pspec); + + pspec = g_param_spec_int64 (name, nick, blurb, + pint->minimum, pint->maximum, + lavc_default ? G_STRUCT_MEMBER (gint64, ctx, ctx_offset) + : pint->default_value, pspec->flags); + break; + } case G_TYPE_UINT:{ GParamSpecUInt *puint = G_PARAM_SPEC_UINT (pspec); @@ -862,6 +877,11 @@ gst_ffmpeg_cfg_set_property (GObject * object, G_STRUCT_MEMBER (gint, ffmpegenc, qdata->offset) = g_value_get_int (value); break; + case G_TYPE_INT64: + g_return_val_if_fail (qdata->size == sizeof (gint64), TRUE); + G_STRUCT_MEMBER (gint64, ffmpegenc, qdata->offset) = + g_value_get_int64 (value); + break; case G_TYPE_FLOAT: g_return_val_if_fail (qdata->size == sizeof (gfloat), TRUE); G_STRUCT_MEMBER (gfloat, ffmpegenc, qdata->offset) = @@ -924,6 +944,11 @@ gst_ffmpeg_cfg_get_property (GObject * object, g_return_val_if_fail (qdata->size == sizeof (gint), TRUE); g_value_set_int (value, G_STRUCT_MEMBER (gint, ffmpegenc, qdata->offset)); break; + case G_TYPE_INT64: + g_return_val_if_fail (qdata->size == sizeof (gint64), TRUE); + g_value_set_int64 (value, G_STRUCT_MEMBER (gint64, ffmpegenc, + qdata->offset)); + break; case G_TYPE_FLOAT: g_return_val_if_fail (qdata->size == sizeof (gfloat), TRUE); g_value_set_float (value, -- cgit v1.2.1