Re: MFC: different h264 profile and level output the same size encoded result

From: Randy Li
Date: Mon Aug 29 2016 - 01:59:27 EST




On 08/29/2016 01:49 PM, Andrzej Hajda wrote:
Hi,

On 08/27/2016 11:55 AM, Randy Li wrote:
Hi:

I have been reported that the setting the profile, level and bitrate
through the v4l2 extra controls would not make the encoded result
different. I tried it recently, it is true. Although the h264 parser
would tell me the result have been applied as different h264 profile and
level, but size is the same.

You may try this in Gstreamer.

gst-launch-1.0 -v \
videotestsrc num-buffers=500 ! video/x-raw, width=1920,height=1080 ! \
videoconvert ! \
v4l2video4h264enc
extra-controls="controls,h264_profile=1,video_bitrate=100;" ! \
h264parse ! matroskamux ! filesink location=/tmp/1.mkv

Is there any way to reduce the size of MFC encoded data?


There is control called rc_enable (rate control enable), it must be set
to one if you want to control bitrate.
This control confuses many users, I guess it cannot be removed as it
is already part of UAPI, but enabling it internally by the driver
if user sets bitrate, profille, etc, would make it more saner.
I see, thank you so much.
A guy told me that the "frame_level_rate_control_enable=1" in _ extra-controls="encode,h264_level=10,h264_profile=4,frame_level_rate_control_enable=1,video_bitrate=2097152"
would also make it works.
But I really know there is a switch need to turn on.


Regards
Andrzej



--
Randy Li
The third produce department