msdkh265enc: let MSDK select the encoding mode by default

MSDK may support lowpower and non-lowpower modes, some features are
available only under one of the two modes, which is hard to know for
user, so let MSDK select the mode by default.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1405>
This commit is contained in:
Haihao Xiang 2020-07-01 10:18:24 +08:00 committed by GStreamer Merge Bot
parent d6635346a2
commit 9e977832c1
2 changed files with 10 additions and 7 deletions

View file

@ -48,7 +48,7 @@ enum
PROP_MAX_SLICE_SIZE, PROP_MAX_SLICE_SIZE,
}; };
#define PROP_LOWPOWER_DEFAULT FALSE #define PROP_LOWPOWER_DEFAULT -1
#define PROP_TILE_ROW_DEFAULT 1 #define PROP_TILE_ROW_DEFAULT 1
#define PROP_TILE_COL_DEFAULT 1 #define PROP_TILE_COL_DEFAULT 1
#define PROP_MAX_SLICE_SIZE_DEFAULT 0 #define PROP_MAX_SLICE_SIZE_DEFAULT 0
@ -266,7 +266,8 @@ gst_msdkh265enc_configure (GstMsdkEnc * encoder)
} }
encoder->param.mfx.LowPower = encoder->param.mfx.LowPower =
(h265enc->lowpower ? MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF); (h265enc->lowpower == 1 ? MFX_CODINGOPTION_ON : (h265enc->lowpower ==
0 ? MFX_CODINGOPTION_OFF : MFX_CODINGOPTION_UNKNOWN));
return TRUE; return TRUE;
} }
@ -388,7 +389,7 @@ gst_msdkh265enc_set_property (GObject * object, guint prop_id,
switch (prop_id) { switch (prop_id) {
case PROP_LOW_POWER: case PROP_LOW_POWER:
thiz->lowpower = g_value_get_boolean (value); thiz->lowpower = g_value_get_int (value);
break; break;
case PROP_TILE_ROW: case PROP_TILE_ROW:
@ -422,7 +423,7 @@ gst_msdkh265enc_get_property (GObject * object, guint prop_id, GValue * value,
GST_OBJECT_LOCK (thiz); GST_OBJECT_LOCK (thiz);
switch (prop_id) { switch (prop_id) {
case PROP_LOW_POWER: case PROP_LOW_POWER:
g_value_set_boolean (value, thiz->lowpower); g_value_set_int (value, thiz->lowpower);
break; break;
case PROP_TILE_ROW: case PROP_TILE_ROW:
@ -524,8 +525,10 @@ gst_msdkh265enc_class_init (GstMsdkH265EncClass * klass)
gst_msdkenc_install_common_properties (encoder_class); gst_msdkenc_install_common_properties (encoder_class);
g_object_class_install_property (gobject_class, PROP_LOW_POWER, g_object_class_install_property (gobject_class, PROP_LOW_POWER,
g_param_spec_boolean ("low-power", "Low power", "Enable low power mode", g_param_spec_int ("low-power", "Low power",
PROP_LOWPOWER_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); "Enable low power mode(-1: default, 0: disable, 1: enable)",
-1, 1, PROP_LOWPOWER_DEFAULT,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_TILE_ROW, g_object_class_install_property (gobject_class, PROP_TILE_ROW,
g_param_spec_uint ("num-tile-rows", "number of rows for tiled encoding", g_param_spec_uint ("num-tile-rows", "number of rows for tiled encoding",

View file

@ -55,7 +55,7 @@ struct _GstMsdkH265Enc
{ {
GstMsdkEnc base; GstMsdkEnc base;
gboolean lowpower; gint lowpower;
gushort num_tile_rows; gushort num_tile_rows;
gushort num_tile_cols; gushort num_tile_cols;
guint max_slice_size; guint max_slice_size;