API: h264 encode: add packed SEI header.
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>
Thu, 24 Nov 2011 16:50:42 +0000 (16:50 +0000)
committerXiang, Haihao <haihao.xiang@intel.com>
Tue, 28 May 2013 08:19:08 +0000 (16:19 +0800)
va/va.h
va/va_enc_h264.h

diff --git a/va/va.h b/va/va.h
index 25c7feb..6bf1521 100644 (file)
--- a/va/va.h
+++ b/va/va.h
@@ -388,6 +388,8 @@ typedef struct _VAConfigAttrib {
 #define VA_ENC_PACKED_HEADER_PICTURE    0x00000002
 /** \brief Driver supports packed slice headers. e.g. \c slice_header() for H.264. */
 #define VA_ENC_PACKED_HEADER_SLICE      0x00000004
+/** \brief Driver supports misc packed headers. e.g. SEI for H.264. */
+#define VA_ENC_PACKED_HEADER_MISC       0x00000008
 /**@}*/
 
 /** @name Attribute values for VAConfigAttribEncInterlaced */
@@ -689,15 +691,20 @@ typedef enum
 
 /** \brief Packed header type. */
 typedef enum {
-    VAEncPackedHeaderSequence           = 1, /**< Packed sequence header. */
-    VAEncPackedHeaderPicture            = 2, /**< Packed picture header. */
-    VAEncPackedHeaderSlice              = 3, /**< Packed slice header. */
+    /** \brief Packed sequence header. */
+    VAEncPackedHeaderSequence   = 1,
+    /** \brief Packed picture header. */
+    VAEncPackedHeaderPicture    = 2,
+    /** \brief Packed slice header. */
+    VAEncPackedHeaderSlice      = 3,
+    /** \brief Misc packed header. See codec-specific definitions. */
+    VAEncPackedHeaderMiscMask   = 0x80000000,
 } VAEncPackedHeaderType;
 
 /** \brief Packed header parameter. */
 typedef struct _VAEncPackedHeaderParameterBuffer {
     /** Type of the packed header buffer. See #VAEncPackedHeaderType. */
-    VAEncPackedHeaderType       type;
+    unsigned int                type;
     /** \brief Size of the #VAEncPackedHeaderDataBuffer in bits. */
     unsigned int                bit_length;
     /** \brief Flag: buffer contains start code emulation prevention bytes? */
index a57c333..fc809ae 100644 (file)
@@ -65,6 +65,27 @@ extern "C" {
 /**@}*/
 
 /**
+ * \brief Packed header types specific to H.264 encoding.
+ *
+ * Types of packed headers generally used for H.264 encoding. Each
+ * associated packed header data buffer shall contain the start code
+ * prefix 0x000001 followed by the complete NAL unit, thus also
+ * including the \c nal_unit_type.
+ */
+typedef enum {
+    /**
+     * \brief Packed Supplemental Enhancement Information (SEI).
+     *
+     * The corresponding packed header data buffer shall contain the
+     * complete sei_rbsp() syntax element, thus including several
+     * sei_message() elements if necessary.
+     *
+     * Note: packed \c nal_unit_type shall be equal to 6.
+     */
+    VAEncPackedHeaderH264_SEI = (VAEncPackedHeaderMiscMask | 1),
+} VAEncPackedHeaderTypeH264;
+
+/**
  * \brief Sequence parameter for H.264 encoding in main & high profiles.
  *
  * This structure holds information for \c seq_parameter_set_data() as