[v4l2videodecoder] Add new property to enable TBM output buffer
[platform/upstream/gst-plugins-good.git] / sys / v4l2 / gstv4l2videodec.c
index 1086958..b43a6c9 100644 (file)
@@ -51,6 +51,9 @@ enum
 {
   PROP_0,
   V4L2_STD_OBJECT_PROPS
+#ifdef TIZEN_FEATURE_TBM_SUPPORT_FOR_V4L2_DECODER
+  , PROP_TBM_OUTPUT
+#endif /* TIZEN_FEATURE_TBM_SUPPORT_FOR_V4L2_DECODER */
 };
 
 #define gst_v4l2_video_dec_parent_class parent_class
@@ -89,6 +92,13 @@ gst_v4l2_video_dec_set_property (GObject * object,
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       }
       break;
+#ifdef TIZEN_FEATURE_TBM_SUPPORT_FOR_V4L2_DECODER
+    case PROP_TBM_OUTPUT:
+      self->v4l2capture->tbm_output = g_value_get_boolean (value);
+      GST_INFO_OBJECT (self, "tbm output [%d]", self->v4l2capture->tbm_output);
+      break;
+#endif /* TIZEN_FEATURE_TBM_SUPPORT_FOR_V4L2_DECODER */
+
 
       /* By default, only set on output */
     default:
@@ -113,6 +123,12 @@ gst_v4l2_video_dec_get_property (GObject * object,
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       }
       break;
+#ifdef TIZEN_FEATURE_TBM_SUPPORT_FOR_V4L2_DECODER
+    case PROP_TBM_OUTPUT:
+      GST_INFO_OBJECT (self, "tbm output [%d]", self->v4l2capture->tbm_output);
+      g_value_set_boolean (value, self->v4l2capture->tbm_output);
+      break;
+#endif /* TIZEN_FEATURE_TBM_SUPPORT_FOR_V4L2_DECODER */
 
       /* By default read from output */
     default:
@@ -1005,6 +1021,9 @@ gst_v4l2_video_dec_subinstance_init (GTypeInstance * instance, gpointer g_class)
       GST_OBJECT (GST_VIDEO_DECODER_SRC_PAD (self)),
       V4L2_BUF_TYPE_VIDEO_CAPTURE, klass->default_device,
       gst_v4l2_get_input, gst_v4l2_set_input, NULL);
+#ifdef TIZEN_FEATURE_TBM_SUPPORT_FOR_V4L2_DECODER
+  self->v4l2capture->tbm_output = TRUE;
+#endif /* TIZEN_FEATURE_TBM_SUPPORT_FOR_V4L2_DECODER */
 }
 
 static void
@@ -1057,6 +1076,12 @@ gst_v4l2_video_dec_class_init (GstV4l2VideoDecClass * klass)
       GST_DEBUG_FUNCPTR (gst_v4l2_video_dec_change_state);
 
   gst_v4l2_object_install_m2m_properties_helper (gobject_class);
+#ifdef TIZEN_FEATURE_TBM_SUPPORT_FOR_V4L2_DECODER
+  g_object_class_install_property (gobject_class, PROP_TBM_OUTPUT,
+      g_param_spec_boolean ("tbm-output", "Enable TBM for output buffer",
+          "It works for only DMABUF mode.",
+          TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+#endif /* TIZEN_FEATURE_TBM_SUPPORT_FOR_V4L2_DECODER */
 }
 
 static void