Am 18.10.2016 um 15:42 schrieb Andy Furniss:
Andy Furniss wrote:
Christian König wrote:
Am 18.10.2016 um 11:19 schrieb Andy Furniss: wrote:
From: Boyuan Zhang <>

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.


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.

Exactly, I mean we are talking about features to support encoding into interlaced format. Is anybody still actively doing that?

But even then, it's not so much of a problem advertising mainline profile and then not using MBAFF/PAFF.

But when you advertise B-frames and then can't encode it you got a serious problem because your frames are not in the right order any more :)

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 :-).

Yeah, but again turning it on while the SPS/PPS only advertise the stream to be baseline compliant is a clear violation of the codec standard. (Is that actually encodeable in the stream? or does the encoder switch to some higher level automatically if you use it?).



Signed-off-by: Boyuan Zhang <>
  src/gallium/state_trackers/va/picture.c | 1 -
  1 file changed, 1 deletion(-)

diff --git a/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 =

     //pic control preset
-   context->desc.h264enc.pic_ctrl.enc_cabac_enable = 0x00000001;
context->desc.h264enc.pic_ctrl.enc_constraint_set_flags =

     //rate control

mesa-dev mailing list

mesa-dev mailing list

Reply via email to