[Libva] [PATCH 2/3] Encode: Don't mess up the index handling of packed raw data with packed slice header

sreerenj.balachandran at intel.com sreerenj.balachandran at intel.com
Wed May 28 14:02:42 PDT 2014


From: Sreerenj Balachandran <sreerenj.balachandran at intel.com>

Avoid storing packed slice header index as packed raw data index.
This patch is a preparation for submitting all the packed slice
headers as a group , instead of pairing with VAEncSliceParameterBuffer in
multi slice per frame encoding. If the user only passes the packed
slice_header data for one slice before VAEncSliceParameterbuffer
one by one, it still can work without this patch.
---
 src/i965_drv_video.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
index 44da864..4854a62 100755
--- a/src/i965_drv_video.c
+++ b/src/i965_drv_video.c
@@ -2341,8 +2341,7 @@ i965_encoder_render_picture(VADriverContextP ctx,
                 vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER;
                 return vaStatus;
             }
-            if (encode->last_packed_header_type == VAEncPackedHeaderRawData ||
-                encode->last_packed_header_type == VAEncPackedHeaderSlice) {
+            if (encode->last_packed_header_type == VAEncPackedHeaderRawData) {
                 vaStatus = I965_RENDER_ENCODE_BUFFER(packed_header_data_ext);
                 if (vaStatus == VA_STATUS_SUCCESS) {
                     /* store the first index of the packed header data for current slice */
@@ -2351,6 +2350,10 @@ i965_encoder_render_picture(VADriverContextP ctx,
                              SLICE_PACKED_DATA_INDEX_TYPE | (encode->num_packed_header_data_ext - 1);
                     }
                     encode->slice_rawdata_count[encode->num_slice_params_ext]++;
+                }
+	    } else if (encode->last_packed_header_type == VAEncPackedHeaderSlice) {
+                vaStatus = I965_RENDER_ENCODE_BUFFER(packed_header_data_ext);
+                if (vaStatus == VA_STATUS_SUCCESS) {
                     if (encode->last_packed_header_type == VAEncPackedHeaderSlice) {
                         if (encode->slice_header_index[encode->num_slice_params_ext] == 0) {
                             encode->slice_header_index[encode->num_slice_params_ext] =
-- 
1.9.1



More information about the Libva mailing list