For example, let’s focus on h264_entropy_mode.
As for the binary data resulting from encoding and encoding the following two types of pipeline, there is no difference other than the time field of the header of .mp4.
The following example is expected to be encoded by CAVLC:
gst-launch-1.0 filesrc location=test.nv12 ! \
rawvideoparse width=1280 height=960 framerate=15/1 format=23 ! \
v4l2h264enc extra-controls="controls,h264_entropy_mode=0,h264_profile=4,h264_level=10,video_bitrate=256000;" ! \
h264parse ! video/x-h264,stream-format="avc",alignment="au" ! \
mp4mux fragment-duration=10 ! filesink location=test0.mp4
Next example is expected to be encoded by CABAC, but it seems same as CAVLC.
gst-launch-1.0 filesrc location=test.nv12 ! \
rawvideoparse width=1280 height=960 framerate=15/1 format=23 ! \
v4l2h264enc extra-controls="controls,h264_entropy_mode=1,h264_profile=4,h264_level=10,video_bitrate=256000;" ! \
h264parse ! video/x-h264,stream-format="avc",alignment="au" ! \
mp4mux fragment-duration=10 ! filesink location=test1.mp4
Could you please try it?