[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:44:46 PDT 2014


On 28.05.2014 11:35, Zhao, Yakui wrote:
> On Wed, 2014-05-28 at 11:14 +0300, Sreerenj wrote:
>> 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.
> Understand your concern.
> This patch is required to do the preparation of submitting all the
> packed slice_headers before VAEncSliceparameterBuffer. Right?
>
> If it only passes the packed slice_header data for one slice before
> VAEncSliceParameterbuffer one by one, it still can work without this
> patch. Right?


It will work with out this patch. But it unnecessary to store the 
packed_slice_header_index in packed_raw_data_index array. Also it create 
lots  of confusion while reading the code even though the case is 
handling inside the
implementation of intel_avc_slice_insert_packed_data().


> If so, it will be better that you can add this description.
>
>
>
>>> 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