add vpp process in gstvaapipostprocess
[profile/ivi/gstreamer-vaapi.git] / gst-libs / gst / vaapi / gstvaapipostprocess.h
index 323f3e7..6e313f9 100644 (file)
@@ -38,6 +38,11 @@ enum {
     PROP_DEINTERLACE,
     PROP_DEINTERLACE_MODE,
     PROP_DEINTERLACE_METHOD,
+    PROP_DENOISE, 
+    PROP_DENOISE_LEVEL, 
+    PROP_FORMAT,
+    PROP_WIDTH,
+    PROP_HEIGHT,
 };
 
 typedef enum _GstVaapiDeinterlaceMethod         GstVaapiDeinterlaceMethod;
@@ -60,6 +65,84 @@ enum _GstVaapiDeinterlaceMethod {
 #define GST_VAAPI_TYPE_DEINTERLACE_METHOD \
     gst_vaapi_deinterlace_method_get_type()
 
+#include "sysdeps.h"
+#if USE_VA_VPP
+#include <va/va_vpp.h>
+
+#define GST_VAAPI_TYPE_POSTPROCESS \
+    (gst_vaapi_postprocess_get_type())
+
+#define GST_VAAPI_POSTPROCESS(obj)                            \
+    (G_TYPE_CHECK_INSTANCE_CAST((obj),                  \
+                                GST_VAAPI_TYPE_POSTPROCESS,   \
+                                GstVaapiPostprocess))
+
+#define GST_VAAPI_POSTPROCESS_CLASS(klass)                    \
+    (G_TYPE_CHECK_CLASS_CAST((klass),                   \
+                             GST_VAAPI_TYPE_POSTPROCESS,      \
+                             GstVaapiPostprocessClass))
+
+#define GST_VAAPI_IS_POSTPROCESS(obj) \
+    (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_VAAPI_TYPE_POSTPROCESS))
+
+#define GST_VAAPI_IS_POSTPROCESS_CLASS(klass) \
+    (G_TYPE_CHECK_CLASS_TYPE((klass), GST_VAAPI_TYPE_POSTPROCESS))
+
+#define GST_VAAPI_POSTPROCESS_GET_CLASS(obj)                  \
+    (G_TYPE_INSTANCE_GET_CLASS((obj),                   \
+                               GST_VAAPI_TYPE_POSTPROCESS,    \
+                               GstVaapiPostprocessClass))
+
+/**
+ * GST_VAAPI_POSTPROCESS_SUPPORTED:
+ * @postprocess: a #GstVaapiPostprocess
+ *
+ * Macro that evaluates supported or not  of post-processing @postprocess.
+ */
+#define GST_VAAPI_POSTPROCESS_SUPPORTED(postprocess)   gst_vaapi_postprocess_supported(postprocess)
+
+typedef struct _GstVaapiPostprocess                   GstVaapiPostprocess;
+typedef struct _GstVaapiPostprocessPrivate            GstVaapiPostprocessPrivate;
+typedef struct _GstVaapiPostprocessClass              GstVaapiPostprocessClass;
+
+ /**
+ * GstVaapiPostprocess:
+ *
+ * Video Postprocessing
+ */
+ typedef int (*fun_ptr)(int,int); 
+typedef gboolean 
+(*vaapipostprocess_process)(GstVaapiPostprocess *postproc, GstVaapiSurface *in_surface, GstVaapiSurface **out_surface);
+
+struct _GstVaapiPostprocess {
+    /*< private >*/
+    GstVaapiObject parent_instance;
+
+    GstVaapiPostprocessPrivate *priv;
+    vaapipostprocess_process process;
+};
+
+/**
+ * GstVaapiPostprocessClass:
+ *
+ * Video Postprocessing class
+ */
+struct _GstVaapiPostprocessClass {
+    /*< private >*/
+    GstVaapiObjectClass parent_class;
+};
+
+GType
+gst_vaapi_postprocess_get_type(void) G_GNUC_CONST;
+
+GstVaapiPostprocess *
+gst_vaapi_postprocess_new(
+    GstVaapiDisplay    *display);
+
+gboolean 
+gst_vaapi_postprocess_get_supported(GstVaapiPostprocess *postprocess);
+#endif
+
 G_END_DECLS
 
 #endif /* GST_VAAPI_POSTPROCESS_H */