diff options
author | pylee <penne.y.lee@intel.com> | 2013-10-30 09:41:31 -0700 |
---|---|---|
committer | Xiang, Haihao <haihao.xiang@intel.com> | 2015-04-03 09:28:45 +0800 |
commit | 062a63932c0f1439aa587aa986bbcfb758ff38f2 (patch) | |
tree | bbacf8a5cc1e8fb5c620108a67aba8ddabd812cd /va | |
parent | dc1131911b989fee64740a12d4a74774192d3599 (diff) |
Add VAConfigAttribEncSkipFrame and corresponding structures to support sending skip frame parameters to the encoder's rate control, when the user has externally skipped frames.
(cherry picked from commit 959f462709c9c4cba3243805031cf8d836a940ed)
Conflicts:
va/va.h
Diffstat (limited to 'va')
-rw-r--r-- | va/va.h | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -425,6 +425,14 @@ typedef enum * that can be configured. e.g. a value of 2 means there are two distinct quality levels. */ VAConfigAttribEncQualityRange = 21, + /** + * \brief Encoding skip frame attribute. Read-only. + * + * This attribute conveys whether the driver supports sending skip frame parameters + * (VAEncMiscParameterTypeSkipFrame) to the encoder's rate control, when the user has + * externally skipped frames. + */ + VAConfigAttribEncSkipFrame = 24, /**@}*/ VAConfigAttribTypeMax } VAConfigAttribType; @@ -1006,6 +1014,9 @@ typedef enum /** \brief Buffer type used for HRD parameters. */ VAEncMiscParameterTypeHRD = 5, VAEncMiscParameterTypeQualityLevel = 6, + /** \brief Buffer type used for sending skip frame parameters to the encoder's + * rate control, when the user has externally skipped frames. */ + VAEncMiscParameterTypeSkipFrame = 9 } VAEncMiscParameterType; /** \brief Packed header type. */ @@ -1155,6 +1166,30 @@ typedef struct _VAEncMiscParameterBufferQualityLevel { unsigned int quality_level; } VAEncMiscParameterBufferQualityLevel; +/** + * \brief Encoding skip frame. + * + * The application may choose to skip frames externally to the encoder (e.g. drop completely or + * code as all skip's). For rate control purposes the encoder will need to know the size and number + * of skipped frames. Skip frame(s) indicated through this structure is applicable only to the + * current frame. It is allowed for the application to still send in packed headers for the driver to + * pack, although no frame will be encoded (e.g. for HW to encrypt the frame). + */ +typedef struct _VAEncMiscParameterSkipFrame { + /** \brief Indicates skip frames as below. + * 0: Encode as normal, no skip. + * 1: One or more frames were skipped prior to the current frame, encode the current frame as normal. + * 2: The current frame is to be skipped, do not encode it but pack/encrypt the packed header contents + * (all except VAEncPackedHeaderSlice) which could contain actual frame contents (e.g. pack the frame + * in VAEncPackedHeaderPicture). */ + unsigned char skip_frame_flag; + /** \brief The number of frames skipped prior to the current frame. Valid when skip_frame_flag = 1. */ + unsigned char num_skip_frames; + /** \brief When skip_frame_flag = 1, the size of the skipped frames in bits. When skip_frame_flag = 2, + * the size of the current skipped frame that is to be packed/encrypted in bits. */ + unsigned int size_skip_frames; +} VAEncMiscParameterSkipFrame; + /* * There will be cases where the bitstream buffer will not have enough room to hold * the data for the entire slice, and the following flags will be used in the slice |