[Mesa-dev] [PATCH] st/va: disable cabac for h264 baseline profile

Andy Furniss adf.lists at gmail.com
Tue Oct 18 13:42:07 UTC 2016


Andy Furniss wrote:
> Christian König wrote:
>> Am 18.10.2016 um 11:19 schrieb Andy Furniss:
>>> boyuan.zhang at amd.com wrote:
>>>> From: Boyuan Zhang <boyuan.zhang at amd.com>
>>>>
>>>> cabac is only supported in the h264 main and higher profiles
>>>
>>> So shouldn't there be code allows it if the user space doesn't
>>> set baseline?
>>>
>>> I don't know how in gstreamer as it seems to try to use b-frames
>>> if you use other than baseline which doesn't work.
>>>
>>> With avconv it is possible to call main/high and set b-frames to 0.
>>>
>>> I know it's technically correct spec wise, but seems a shame as it
>>> costs a fair bit in "free" efficiency.
>>>
>>> On Windows the raptor game recording app produces files flagged as
>>> high with cabac - but without b-frames.
>>
>> The problem is that it can easily break decoders. CABAC is simply not
>> allowed in a stream flagged as baseline compliant.
>
> But with ffmpeg/avconv I can make a stream flagged as main/high even
> if it's really baseline + CABAC. I guess Windows may vary but the test
> I did seems to take this pragmatic approach, as it seems do other h/w
> encoders eg. smartphone output.
>
>> It's a pity that we don't support B-frames any more.
>
> Anymore? Now I am curious, seems to work with omx (cqp single instance)
>
>
>> With that in place
>> we could easily advertise support for mainline profile.
>
> MBAFF/PAFF?

Sorry if that came over as being pedantic, silly as I think pragmatism
is the way to go and I know intel advertise main/high, but doubt they
do interlaced.

In fact vce vaapi is currently advertising them as well (I did mention
it in some thread). Good for letting ffmpeg flag as such while not using
b-frames, not so good for gstreamer as they have changed the default to
high so old command lines will not explicitly fail, but will produce junk.

I see va.h has a cabac switch and gstreamer exposes it - though it's not
read by the driver. Maybe if that were hooked up then users could turn
it on and profit :-).


>
>> Christian.
>>
>>>
>>>> Signed-off-by: Boyuan Zhang <boyuan.zhang at amd.com>
>>>> ---
>>>>   src/gallium/state_trackers/va/picture.c | 1 -
>>>>   1 file changed, 1 deletion(-)
>>>>
>>>> diff --git a/src/gallium/state_trackers/va/picture.c
>>>> b/src/gallium/state_trackers/va/picture.c
>>>> index eae5dc4..db08a3c 100644
>>>> --- a/src/gallium/state_trackers/va/picture.c
>>>> +++ b/src/gallium/state_trackers/va/picture.c
>>>> @@ -110,7 +110,6 @@ getEncParamPreset(vlVaContext *context)
>>>>      context->desc.h264enc.motion_est.enc_ime2_search_range_y =
>>>> 0x00000004;
>>>>
>>>>      //pic control preset
>>>> -   context->desc.h264enc.pic_ctrl.enc_cabac_enable = 0x00000001;
>>>>      context->desc.h264enc.pic_ctrl.enc_constraint_set_flags =
>>>> 0x00000040;
>>>>
>>>>      //rate control
>>>>
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
>>
>>
>



More information about the mesa-dev mailing list