summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2017-11-23 15:03:48 +0100
committerOlivier CrĂȘte <olivier.crete@collabora.com>2017-11-23 11:39:33 -0500
commita4c18ff243866ee944495048b5c28b33d91ce947 (patch)
tree9465f8aa8e55c5166e5afb2ec9f1538db8dae1d2
parent4f91b6f8739adbf96e9f9129603e2cedde99d43a (diff)
downloadgst-omx-a4c18ff243866ee944495048b5c28b33d91ce947.tar.gz
zynqultrascaleplus: add support for extra AVC levels
The Zynqultrascaleplus has support for extra AVC levels not defined in the OMX spec as a customer extension. https://bugzilla.gnome.org/show_bug.cgi?id=790758
-rw-r--r--omx/gstomxh264enc.c14
-rw-r--r--omx/gstomxh264utils.c10
2 files changed, 24 insertions, 0 deletions
diff --git a/omx/gstomxh264enc.c b/omx/gstomxh264enc.c
index 8a9c4c4..148b634 100644
--- a/omx/gstomxh264enc.c
+++ b/omx/gstomxh264enc.c
@@ -696,6 +696,20 @@ gst_omx_h264_enc_get_caps (GstOMXVideoEnc * enc, GstOMXPort * port,
case OMX_VIDEO_AVCLevel51:
level = "5.1";
break;
+#ifdef USE_OMX_TARGET_ZYNQ_USCALE_PLUS
+ case OMX_ALG_VIDEO_AVCLevel52:
+ level = "5.2";
+ break;
+ case OMX_ALG_VIDEO_AVCLevel60:
+ level = "6.0";
+ break;
+ case OMX_ALG_VIDEO_AVCLevel61:
+ level = "6.1";
+ break;
+ case OMX_ALG_VIDEO_AVCLevel62:
+ level = "6.2";
+ break;
+#endif
default:
g_assert_not_reached ();
gst_caps_unref (caps);
diff --git a/omx/gstomxh264utils.c b/omx/gstomxh264utils.c
index 6aeb088..828cf65 100644
--- a/omx/gstomxh264utils.c
+++ b/omx/gstomxh264utils.c
@@ -81,6 +81,16 @@ gst_omx_h264_utils_get_level_from_str (const gchar * level)
return OMX_VIDEO_AVCLevel5;
} else if (g_str_equal (level, "5.1")) {
return OMX_VIDEO_AVCLevel51;
+#ifdef USE_OMX_TARGET_ZYNQ_USCALE_PLUS
+ } else if (g_str_equal (level, "5.2")) {
+ return (OMX_VIDEO_AVCLEVELTYPE) OMX_ALG_VIDEO_AVCLevel52;
+ } else if (g_str_equal (level, "6.0")) {
+ return (OMX_VIDEO_AVCLEVELTYPE) OMX_ALG_VIDEO_AVCLevel60;
+ } else if (g_str_equal (level, "6.1")) {
+ return (OMX_VIDEO_AVCLEVELTYPE) OMX_ALG_VIDEO_AVCLevel61;
+ } else if (g_str_equal (level, "6.2")) {
+ return (OMX_VIDEO_AVCLEVELTYPE) OMX_ALG_VIDEO_AVCLevel62;
+#endif
}
return OMX_VIDEO_AVCLevelMax;