From 1308b2f6e598f88bdbe27b655dadb62e3b8009d5 Mon Sep 17 00:00:00 2001 From: Mengkejiergeli Ba Date: Sun, 23 Apr 2023 17:20:05 +0800 Subject: [PATCH] msdkenc: Add help functions to check and update property Part-of: --- .../gst-plugins-bad/sys/msdk/gstmsdkenc.c | 33 +++++++++++++++++++ .../gst-plugins-bad/sys/msdk/gstmsdkenc.h | 21 ++++++++++++ 2 files changed, 54 insertions(+) diff --git a/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.c b/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.c index 72b23b84fa..8eab51f57c 100644 --- a/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.c +++ b/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.c @@ -2006,6 +2006,39 @@ gst_msdkenc_init (GstMsdkEnc * thiz) EC_PROPS_EXTBRC, G_TYPE_STRING, "off", NULL); } +/* *INDENT-OFF* */ +#define UPDATE_PROPERTY \ + if (*old_val == new_val) { \ + return FALSE; \ + } \ + *old_val = new_val; \ + thiz->reconfig = TRUE; \ + return TRUE; \ + +gboolean +gst_msdkenc_check_update_property_uint (GstMsdkEnc * thiz, guint * old_val, + guint new_val) +{ + UPDATE_PROPERTY +} + +gboolean +gst_msdkenc_check_update_property_int (GstMsdkEnc * thiz, gint * old_val, + gint new_val) +{ + UPDATE_PROPERTY +} + +gboolean +gst_msdkenc_check_update_property_bool (GstMsdkEnc * thiz, gboolean * old_val, + gboolean new_val) +{ + UPDATE_PROPERTY +} + +#undef UPDATE_PROPERTY +/* *INDENT-ON* */ + /* gst_msdkenc_set_common_property: * * This is a helper function to set the common property diff --git a/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.h b/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.h index 45aa969206..27c4f01061 100644 --- a/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.h +++ b/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.h @@ -56,6 +56,15 @@ G_BEGIN_DECLS #define MAX_EXTRA_PARAMS 8 +#define check_update_property(type, obj, old_val, new_val) \ + gst_msdkenc_check_update_property_##type (obj, old_val, new_val) +#define check_update_property_uint(obj, old_val, new_val) \ + check_update_property (uint, obj, old_val, new_val) +#define check_update_property_int(obj, old_val, new_val) \ + check_update_property (int, obj, old_val, new_val) +#define check_update_property_bool(obj, old_val, new_val) \ + check_update_property (bool, obj, old_val, new_val) + typedef struct _GstMsdkEnc GstMsdkEnc; typedef struct _GstMsdkEncClass GstMsdkEncClass; typedef struct _MsdkEncTask MsdkEncTask; @@ -209,6 +218,18 @@ void gst_msdkenc_add_extra_param (GstMsdkEnc * thiz, mfxExtBuffer * param); void gst_msdkenc_install_common_properties (GstMsdkEncClass *encoder_class); +gboolean +gst_msdkenc_check_update_property_uint (GstMsdkEnc * thiz, guint * old_val, + guint new_val); + +gboolean +gst_msdkenc_check_update_property_int (GstMsdkEnc * thiz, gint * old_val, + gint new_val); + +gboolean +gst_msdkenc_check_update_property_bool (GstMsdkEnc * thiz, gboolean * old_val, + gboolean new_val); + gboolean gst_msdkenc_set_common_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec);