summaryrefslogtreecommitdiff
path: root/gst-libs
diff options
context:
space:
mode:
authorHe Junyan <junyan.he@hotmail.com>2019-08-26 23:16:33 +0800
committerHe Junyan <junyan.he@hotmail.com>2019-08-30 21:21:04 +0800
commiteb17703d43a91ea9a7c43e37a3182616a2e0f78f (patch)
treefcb835014971a3671c572b413ead8cd73e15d8d6 /gst-libs
parent12566804860009a0041bceb8fbf93f4c2597b136 (diff)
libs: encoder: implement get_view_ids for h264 encoder.
Diffstat (limited to 'gst-libs')
-rw-r--r--gst-libs/gst/vaapi/gstvaapiencoder_h264.c19
-rw-r--r--gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c19
-rw-r--r--gst-libs/gst/vaapi/gstvaapifeienc_h264.c19
3 files changed, 51 insertions, 6 deletions
diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_h264.c b/gst-libs/gst/vaapi/gstvaapiencoder_h264.c
index 22ac7d23..68e60f1c 100644
--- a/gst-libs/gst/vaapi/gstvaapiencoder_h264.c
+++ b/gst-libs/gst/vaapi/gstvaapiencoder_h264.c
@@ -3515,6 +3515,22 @@ set_default_ids:
}
}
+static void
+get_view_ids (GstVaapiEncoderH264 * const encoder, GValue * value)
+{
+ guint i;
+ GValue id = G_VALUE_INIT;
+
+ g_value_reset (value);
+ g_value_init (&id, G_TYPE_UINT);
+
+ for (i = 0; i < encoder->num_views; i++) {
+ g_value_set_uint (&id, encoder->view_ids[i]);
+ gst_value_array_append_value (value, &id);
+ }
+ g_value_unset (&id);
+}
+
/**
* @ENCODER_H264_PROP_RATECONTROL: Rate control (#GstVaapiRateControl).
* @ENCODER_H264_PROP_TUNE: The tuning options (#GstVaapiEncoderTune).
@@ -3770,8 +3786,7 @@ gst_vaapi_encoder_h264_get_property (GObject * object, guint prop_id,
g_value_set_uint (value, encoder->num_views);
break;
case ENCODER_H264_PROP_VIEW_IDS:
- // TODO:
- //get_view_ids (encoder, value);
+ get_view_ids (encoder, value);
break;
case ENCODER_H264_PROP_AUD:
g_value_set_boolean (value, encoder->use_aud);
diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c b/gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c
index dc7b0686..f462f8c4 100644
--- a/gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c
+++ b/gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c
@@ -3473,6 +3473,22 @@ set_default_ids:
}
}
+static void
+get_view_ids (GstVaapiEncoderH264Fei * const encoder, GValue * value)
+{
+ guint i;
+ GValue id = G_VALUE_INIT;
+
+ g_value_reset (value);
+ g_value_init (&id, G_TYPE_UINT);
+
+ for (i = 0; i < encoder->num_views; i++) {
+ g_value_set_uint (&id, encoder->view_ids[i]);
+ gst_value_array_append_value (value, &id);
+ }
+ g_value_unset (&id);
+}
+
static GstVaapiEncoderStatus
_gst_vaapi_encoder_h264_fei_set_property (GstVaapiEncoder * base_encoder,
gint prop_id, const GValue * value)
@@ -3854,8 +3870,7 @@ gst_vaapi_encoder_h264_fei_get_property (GObject * object, guint prop_id,
g_value_set_uint (value, encoder->num_views);
break;
case ENCODER_H264_FEI_PROP_VIEW_IDS:
- // TODO:
- //get_view_ids (encoder, value);
+ get_view_ids (encoder, value);
break;
case ENCODER_H264_PROP_FEI_DISABLE:
g_value_set_boolean (value, encoder->is_fei_disabled);
diff --git a/gst-libs/gst/vaapi/gstvaapifeienc_h264.c b/gst-libs/gst/vaapi/gstvaapifeienc_h264.c
index 0816bf96..24702b6c 100644
--- a/gst-libs/gst/vaapi/gstvaapifeienc_h264.c
+++ b/gst-libs/gst/vaapi/gstvaapifeienc_h264.c
@@ -1747,6 +1747,22 @@ set_default_ids:
}
}
+static void
+get_view_ids (GstVaapiFeiEncH264 * const encoder, GValue * value)
+{
+ guint i;
+ GValue id = G_VALUE_INIT;
+
+ g_value_reset (value);
+ g_value_init (&id, G_TYPE_UINT);
+
+ for (i = 0; i < encoder->num_views; i++) {
+ g_value_set_uint (&id, encoder->view_ids[i]);
+ gst_value_array_append_value (value, &id);
+ }
+ g_value_unset (&id);
+}
+
GstVaapiEncoderStatus
gst_vaapi_feienc_h264_set_property (GstVaapiEncoder * base_encoder,
gint prop_id, const GValue * value)
@@ -2029,8 +2045,7 @@ gst_vaapi_feienc_h264_get_property (GObject * object, guint prop_id,
g_value_set_uint (value, feienc->num_views);
break;
case FEI_H264_ENC_PROP_VIEW_IDS:
- // TODO:
- //get_view_ids (feienc, value);
+ get_view_ids (feienc, value);
break;
case FEI_H264_ENC_PROP_NUM_REF:
g_value_set_uint (value, feienc->num_ref_frames);