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

Sreerenj sreerenj.balachandran at intel.com
Wed May 28 01:14:56 PDT 2014


Hi,
On 28.05.2014 11:07, Zhao, Yakui wrote:
> On Wed, 2014-05-28 at 10:10 +0300, sreerenj.balachandran at intel.com
> wrote:
>> From: Sreerenj Balachandran <sreerenj.balachandran at intel.com>
>>
>> Avoid storing packed slice header index as packed raw data index.
>> This is necessary for handling the use case of having
>> only packed slice header and no packed raw data feeding from user.
> Hi, Screerenj
>      Thanks for your patch. It looks good to me.
>   
> BTW: Can it handle the case of having only packed slice_header if this
> patch is not applied?
The use case having only packed_slice_headers in a mulit-slice-per-frame 
scenario won't work if the user submit all packed_slice headers before
submitting the VAEncSliceParameterBuffer.  It should be possible to 
submit the packed_slice_headers with out pairing with the submission of
VAEncSliceParameterBuffer. right? I am preparing another patch to handle 
this case.
> In fact when inserting the packing data, the packed slice_header info
> will be deferred to the last step although it is also tracked in packed
> rawdata type.
>
> Thanks.
>       Yakui
>> ---
>>   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 c5a4f37..b69c606 100755
>> --- a/src/i965_drv_video.c
>> +++ b/src/i965_drv_video.c
>> @@ -2334,8 +2334,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 */
>> @@ -2344,6 +2343,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] =
>

-- 
Thanks
Sree

---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki 
Business Identity Code: 0357606 - 4 
Domiciled in Helsinki 

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.


More information about the Libva mailing list