summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinfengZhang <carl.zhang@intel.com>2018-06-16 00:05:48 +0800
committerXinfengZhang <carl.zhang@intel.com>2019-07-08 11:26:38 +0800
commitf094de317b4f498b57d47d8b0823a2a24cb125e1 (patch)
tree4a7079d78a1c25eb90e02c2b0368fa00a61d551f
parent7bbddffddb4a15f0163f89d5d87860866e850cde (diff)
downloadlibva-f094de317b4f498b57d47d8b0823a2a24cb125e1.tar.gz
add prediction direction caps report
report which prediction direction is supported by driver Signed-off-by: XinfengZhang <carl.zhang@intel.com>
-rwxr-xr-xva/va.h25
-rw-r--r--va/va_str.c1
2 files changed, 26 insertions, 0 deletions
diff --git a/va/va.h b/va/va.h
index d847e7b..63d4bb7 100755
--- a/va/va.h
+++ b/va/va.h
@@ -761,6 +761,18 @@ typedef enum
* attribute value \c VAConfigAttribValMaxFrameSize represent max frame size support
*/
VAConfigAttribMaxFrameSize = 38,
+ /** \brief inter frame prediction directrion attribute. Read-only.
+ * this attribute conveys the prediction direction (backward or forword) for specific config
+ * the value could be VA_PREDICTION_DIRECTION_XXXX. it can be combined with VAConfigAttribEncMaxRefFrames
+ * to describe reference list , and the prediction direction. if this attrib is not present,both direction
+ * should be supported, no restriction.
+ * for example: normal HEVC encoding , maximum reference frame number in reflist 0 and reflist 1 is deduced
+ * by VAConfigAttribEncMaxRefFrames. so there are typical P frame, B frame,
+ * if VAConfigAttribPredictionDirection is also present. it will stipulate prediction direction in both
+ * reference list. if only one prediction direction present(such as PREVIOUS),all reference frame should be
+ * previous frame (PoC < current).
+ */
+ VAConfigAttribPredictionDirection = 39,
/**@}*/
VAConfigAttribTypeMax
} VAConfigAttribType;
@@ -990,6 +1002,19 @@ typedef union _VAConfigAttribValEncJPEG {
#define VA_ENC_QUANTIZATION_TRELLIS_SUPPORTED 0x00000001
/**@}*/
+/** @name Attribute values for VAConfigAttribPredictionDirection */
+/**@{*/
+/** \brief Driver support forward reference frame (inter frame for vpx, P frame for H26x MPEG)
+ * can work with the VAConfigAttribEncMaxRefFrames. for example: low delay B frame of HEVC.
+ * these value can be OR'd together. typical value should be VA_PREDICTION_DIRECTION_PREVIOUS
+ * or VA_PREDICTION_DIRECTION_PREVIOUS | VA_PREDICTION_DIRECTION_FUTURE, theoretically, there
+ * are no stream only include future reference frame.
+ */
+#define VA_PREDICTION_DIRECTION_PREVIOUS 0x00000001
+/** \brief Driver support backward prediction frame/slice */
+#define VA_PREDICTION_DIRECTION_FUTURE 0x00000002
+/**@}*/
+
/** @name Attribute values for VAConfigAttribEncIntraRefresh */
/**@{*/
/** \brief Driver does not support intra refresh */
diff --git a/va/va_str.c b/va/va_str.c
index 4ce1ea1..ffffc6a 100644
--- a/va/va_str.c
+++ b/va/va_str.c
@@ -124,6 +124,7 @@ const char *vaConfigAttribTypeStr(VAConfigAttribType configAttribType)
TOSTR(VAConfigAttribQPBlockSize);
TOSTR(VAConfigAttribStats);
TOSTR(VAConfigAttribMaxFrameSize);
+ TOSTR(VAConfigAttribPredictionDirection);
case VAConfigAttribTypeMax: break;
}
return "<unknown config attribute type>";