[Pkg-gstreamer-commits] [gstreamer-vaapi] 136/176: surface: rework render flags.

Vincent Cheng vcheng at moszumanska.debian.org
Tue Jun 3 08:09:35 UTC 2014


This is an automated email from the git hooks/post-receive script.

vcheng pushed a commit to branch upstream
in repository gstreamer-vaapi.

commit 751aa05937d736503fce22ba784820f7184f0b40
Author: Gwenole Beauchesne <gwenole.beauchesne at intel.com>
Date:   Wed Mar 28 15:05:26 2012 +0200

    surface: rework render flags.
    
    Pack render flags per category and provide more flags into the color
    standard category. In particular, cover for SMPTE-240M.
---
 gst-libs/gst/vaapi/gstvaapisurface.h | 31 ++++++++++++++++++++---------
 gst-libs/gst/vaapi/gstvaapiutils.c   | 38 ++++++++++++++++++++++++++----------
 gst/vaapi/gstvaapipostproc.c         |  6 ++----
 3 files changed, 52 insertions(+), 23 deletions(-)

diff --git a/gst-libs/gst/vaapi/gstvaapisurface.h b/gst-libs/gst/vaapi/gstvaapisurface.h
index 639ed2a..5ddfd01 100644
--- a/gst-libs/gst/vaapi/gstvaapisurface.h
+++ b/gst-libs/gst/vaapi/gstvaapisurface.h
@@ -110,19 +110,32 @@ typedef enum {
  *   uses ITU-R BT.601 standard for color space conversion
  * @GST_VAAPI_COLOR_STANDARD_ITUR_BT_709:
  *   uses ITU-R BT.709 standard for color space conversion
+ * @GST_VAAPI_COLOR_STANDARD_ITUR_BT_470M:
+ *   uses ITU-R BT.470-2 System M standard for color space conversion
+ * @GST_VAAPI_COLOR_STANDARD_ITUR_BT_470BG:
+ *   uses ITU-R BT.470-2 System B, G standard for color space conversion
+ * @GST_VAAPI_COLOR_STANDARD_SMPTE_170M:
+ *   uses SMPTE-170M standard for color space conversion
+ * @GST_VAAPI_COLOR_STANDARD_SMPTE_240M:
+ *   uses SMPTE-240M standard for color space conversion
  *
  * The set of all render flags for gst_vaapi_window_put_surface().
  */
 typedef enum {
-    GST_VAAPI_PICTURE_STRUCTURE_TOP_FIELD       = 1 << 0,
-    GST_VAAPI_PICTURE_STRUCTURE_BOTTOM_FIELD    = 1 << 1,
-    GST_VAAPI_PICTURE_STRUCTURE_FRAME           =
-    (
-        GST_VAAPI_PICTURE_STRUCTURE_TOP_FIELD |
-        GST_VAAPI_PICTURE_STRUCTURE_BOTTOM_FIELD
-    ),
-    GST_VAAPI_COLOR_STANDARD_ITUR_BT_601        = 1 << 2,
-    GST_VAAPI_COLOR_STANDARD_ITUR_BT_709        = 1 << 3,
+    /* Picture structure */
+    GST_VAAPI_PICTURE_STRUCTURE_TOP_FIELD       = 0x01 << 0,
+    GST_VAAPI_PICTURE_STRUCTURE_BOTTOM_FIELD    = 0x02 << 0,
+    GST_VAAPI_PICTURE_STRUCTURE_FRAME           = 0x03 << 0,
+    GST_VAAPI_PICTURE_STRUCTURE_MASK            = 0x00000003, /* 2 bits */
+
+    /* Color standard */
+    GST_VAAPI_COLOR_STANDARD_ITUR_BT_601        = 0x01 << 2,
+    GST_VAAPI_COLOR_STANDARD_ITUR_BT_709        = 0x02 << 2,
+    GST_VAAPI_COLOR_STANDARD_ITUR_BT_470M       = 0x03 << 2,
+    GST_VAAPI_COLOR_STANDARD_ITUR_BT_470BG      = 0x04 << 2,
+    GST_VAAPI_COLOR_STANDARD_SMPTE_170M         = 0x05 << 2,
+    GST_VAAPI_COLOR_STANDARD_SMPTE_240M         = 0x06 << 2,
+    GST_VAAPI_COLOR_STANDARD_MASK               = 0x0000003c, /* 4 bits */
 } GstVaapiSurfaceRenderFlags;
 
 #define GST_VAAPI_SURFACE(obj) \
diff --git a/gst-libs/gst/vaapi/gstvaapiutils.c b/gst-libs/gst/vaapi/gstvaapiutils.c
index 90510e5..daa9fc2 100644
--- a/gst-libs/gst/vaapi/gstvaapiutils.c
+++ b/gst-libs/gst/vaapi/gstvaapiutils.c
@@ -366,24 +366,42 @@ to_GstVideoOverlayFormatFlags(guint flags)
 guint
 from_GstVaapiSurfaceRenderFlags(guint flags)
 {
-    guint va_fields = 0, va_csc = 0;
+    guint va_fields, va_csc;
 
-    if (flags & GST_VAAPI_PICTURE_STRUCTURE_TOP_FIELD)
-        va_fields |= VA_TOP_FIELD;
-    if (flags & GST_VAAPI_PICTURE_STRUCTURE_BOTTOM_FIELD)
-        va_fields |= VA_BOTTOM_FIELD;
-    if ((va_fields ^ (VA_TOP_FIELD|VA_BOTTOM_FIELD)) == 0)
-        va_fields  = VA_FRAME_PICTURE;
+    /* Picture structure */
+    switch (flags & GST_VAAPI_PICTURE_STRUCTURE_MASK) {
+    case GST_VAAPI_PICTURE_STRUCTURE_TOP_FIELD:
+        va_fields = VA_TOP_FIELD;
+        break;
+    case GST_VAAPI_PICTURE_STRUCTURE_BOTTOM_FIELD:
+        va_fields = VA_BOTTOM_FIELD;
+        break;
+    default:
+        va_fields = VA_FRAME_PICTURE;
+        break;
+    }
 
+    /* Color standard */
+    switch (flags & GST_VAAPI_COLOR_STANDARD_MASK) {
 #ifdef VA_SRC_BT601
-    if (flags & GST_VAAPI_COLOR_STANDARD_ITUR_BT_601)
+    case GST_VAAPI_COLOR_STANDARD_ITUR_BT_601:
         va_csc = VA_SRC_BT601;
+        break;
 #endif
 #ifdef VA_SRC_BT709
-    if (flags & GST_VAAPI_COLOR_STANDARD_ITUR_BT_709)
+    case GST_VAAPI_COLOR_STANDARD_ITUR_BT_709:
         va_csc = VA_SRC_BT709;
+        break;
 #endif
-
+#ifdef VA_SRC_SMPTE_240
+    case GST_VAAPI_COLOR_STANDARD_SMPTE_240M:
+        va_csc = VA_SRC_SMPTE_240;
+        break;
+#endif
+    default:
+        va_csc = 0;
+        break;
+    }
     return va_fields|va_csc;
 }
 
diff --git a/gst/vaapi/gstvaapipostproc.c b/gst/vaapi/gstvaapipostproc.c
index 2194252..6abcfb8 100644
--- a/gst/vaapi/gstvaapipostproc.c
+++ b/gst/vaapi/gstvaapipostproc.c
@@ -489,8 +489,7 @@ gst_vaapipostproc_process_vpp(GstBaseTransform *trans, GstBuffer *inbuf,
     ds->tff = tff;
 
     flags = gst_vaapi_video_meta_get_render_flags(inbuf_meta) &
-        ~(GST_VAAPI_PICTURE_STRUCTURE_TOP_FIELD|
-          GST_VAAPI_PICTURE_STRUCTURE_BOTTOM_FIELD);
+        ~GST_VAAPI_PICTURE_STRUCTURE_MASK;
 
     /* First field */
     deint_method = postproc->deinterlace_method;
@@ -652,8 +651,7 @@ gst_vaapipostproc_process(GstBaseTransform *trans, GstBuffer *inbuf,
     deint      = is_interlaced_buffer(postproc, inbuf);
 
     flags = gst_vaapi_video_meta_get_render_flags(meta) &
-        ~(GST_VAAPI_PICTURE_STRUCTURE_TOP_FIELD|
-          GST_VAAPI_PICTURE_STRUCTURE_BOTTOM_FIELD);
+        ~GST_VAAPI_PICTURE_STRUCTURE_MASK;
 
     /* First field */
     fieldbuf = create_output_buffer(postproc);

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gstreamer/gstreamer-vaapi.git



More information about the Pkg-gstreamer-commits mailing list