This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PROCESSOR-SDK-AM62A: v4l2h264enc extra-controls don't affect the compression bitrate, profile, etc.

Part Number: PROCESSOR-SDK-AM62A

Hi all,

I am evaluating the AM62A h264 encoding capabilities. I downloaded the latest Linux image from TI's website (09.00.01.03 - tisdk-edgeai-image-am62axx-evm.wic.xz) and began compressing some file to see what parameters can give the bitrate and the quality I am looking for.

Inspired by the following example provided on the documentation:

gst-launch-1.0 v4l2src io-mode=dmabuf device=/dev/video2 ! video/x-bayer,width=1920,height=1080,format=bggr ! tiovxisp sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/dcc_viss.bin sink_0::dcc-2a-file=/opt/imaging/imx219/dcc_2a.bin sink_0::device=/dev/v4l-subdev2 ! video/x-raw,format=NV12 ! v4l2h264enc output-io-mode=dmabuf-import extra-controls="controls,h264_i_frame_period=60" ! rtph264pay ! udpsink port=5000 host=<ip_address>

I wrote the following pipeline to test if extra-controls had an effect on the output:
gst-launch-1.0 filesrc location=uncompressed_video.avi ! decodebin ! ticolorconvert ! video/x-raw, format=NV12 ! v4l2h264enc extra-controls="controls,h264_i_frame_period=10" ! avimux ! filesink location=compressed-i-10.avi
gst-launch-1.0 filesrc location=uncompressed_video.avi ! decodebin ! ticolorconvert ! video/x-raw, format=NV12 ! v4l2h264enc extra-controls="controls,h264_i_frame_period=5" ! avimux ! filesink location=compressed-i-5.avi

Indeed compressed-i-10.avi has 1 I frame for 9 P frames and compressed-i-5.avi has 1 I frame for 4 P frames.

I listed all the extra-controls available using
$v4l2-ctl --device /dev/video1 --all

Found parameters I wanted to play with:

- h264_profile
- h264_level
- video_bitrate

And whatever value I choose I always end up with a very compressed video (1 Mbps with all i-frame, whatever bitrate I set), the profile and the level won't change unless I add "video/h-264, profile=(string)high" before muxing the video.

Does anyone has a similar experience ? I don't have a MIPI camera at hand but could it be because it's not a live video source ?

Also I am using gst-launch, would it change something if I was generating my pipeline with the c++ library of gstreamer? I have tried many parameters combination but it seems the video file never gets any larger than the one using h264_i_frame_period=1.

Previously I had a similar experience with a NXP card, it was resolved by using the other hardware accelerated plugin provided by NXP instead of the standard v4l2h264enc. The TI documentation seems to indicate the only way to use hardware acceleration for h264 encoding is via v4l2h264enc, am I mistaken?

Any information is welcome!

  • I dived deeper by using GST_DEBUG=v4l2*:7 and found a lot of 'unhandled, FIXME' with v4l2_calls.c:386:gst_v4l2_fill_lists and v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0>. Should I understand that the v4l2h264enc API is not fully developed ?

    0:00:00.161670065  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:138:gst_v4l2_fill_lists:<v4l2h264enc0> getting enumerations
    0:00:00.161692615  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:141:gst_v4l2_fill_lists:<v4l2h264enc0>   channels
    0:00:00.161719220  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:213:gst_v4l2_fill_lists:<v4l2h264enc0>   norms
    0:00:00.161745175  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:261:gst_v4l2_fill_lists:<v4l2h264enc0>   controls+menus
    0:00:00.161771000  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00000000
    0:00:00.161803765  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:323:gst_v4l2_fill_lists:<v4l2h264enc0> starting control class 'User Controls'
    0:00:00.161830635  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00980001
    0:00:00.161872175  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00980914
    0:00:00.161906920  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00980915
    0:00:00.161944360  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID rotate (980922) unhandled, FIXME
    0:00:00.161971705  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00980922
    0:00:00.162008255  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID min_number_of_output_buffers (980928) unhandled, FIXME
    0:00:00.162035970  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00980928
    0:00:00.162064925  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:323:gst_v4l2_fill_lists:<v4l2h264enc0> starting control class 'Codec Controls'
    0:00:00.162091405  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990001
    0:00:00.162128950  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID video_gop_size (9909cb) unhandled, FIXME
    0:00:00.162155950  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 009909cb
    0:00:00.162190210  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID video_bitrate_mode (9909ce) unhandled, FIXME
    0:00:00.162217165  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 009909ce
    0:00:00.162250780  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID video_bitrate (9909cf) unhandled, FIXME
    0:00:00.162277605  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 009909cf
    0:00:00.162312170  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID frame_level_rate_control_enable (9909d7) unhandled, FIXME
    0:00:00.162339485  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 009909d7
    0:00:00.162374985  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID h264_mb_level_rate_control (9909da) unhandled, FIXME
    0:00:00.162402335  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 009909da
    0:00:00.162436605  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID number_of_mbs_in_a_slice (9909dc) unhandled, FIXME
    0:00:00.162463535  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 009909dc
    0:00:00.162497400  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID slice_partitioning_method (9909dd) unhandled, FIXME
    0:00:00.162524615  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 009909dd
    0:00:00.162557795  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID vbv_buffer_size (9909de) unhandled, FIXME
    0:00:00.162584655  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 009909de
    0:00:00.162618235  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID h264_i_frame_qp_value (990a5e) unhandled, FIXME
    0:00:00.162645105  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990a5e
    0:00:00.162679255  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID h264_minimum_qp_value (990a61) unhandled, FIXME
    0:00:00.162706500  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990a61
    0:00:00.162741310  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID h264_maximum_qp_value (990a62) unhandled, FIXME
    0:00:00.162768055  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990a62
    0:00:00.162802070  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID h264_8x8_transform_enable (990a63) unhandled, FIXME
    0:00:00.162829565  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990a63
    0:00:00.162865710  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID h264_entropy_mode (990a65) unhandled, FIXME
    0:00:00.162893320  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990a65
    0:00:00.162927415  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID h264_i_frame_period (990a66) unhandled, FIXME
    0:00:00.162954420  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990a66
    0:00:00.162987630  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID h264_level (990a67) unhandled, FIXME
    0:00:00.163014490  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990a67
    0:00:00.163049550  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID h264_loop_filter_alpha_offset (990a68) unhandled, FIXME
    0:00:00.163076760  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990a68
    0:00:00.163110970  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID h264_loop_filter_beta_offset (990a69) unhandled, FIXME
    0:00:00.163138055  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990a69
    0:00:00.163171830  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID h264_loop_filter_mode (990a6a) unhandled, FIXME
    0:00:00.163199025  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990a6a
    0:00:00.163233585  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID h264_profile (990a6b) unhandled, FIXME
    0:00:00.163260345  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990a6b
    0:00:00.163293790  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID h264_constrained_intra_pred (990a7f) unhandled, FIXME
    0:00:00.163320795  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990a7f
    0:00:00.163353840  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID h264_chroma_qp_index_offset (990a80) unhandled, FIXME
    0:00:00.163381385  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990a80
    0:00:00.163416360  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_minimum_qp_value (990b58) unhandled, FIXME
    0:00:00.163443405  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b58
    0:00:00.163476615  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_maximum_qp_value (990b59) unhandled, FIXME
    0:00:00.163503410  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b59
    0:00:00.163610850  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_i_frame_qp_value (990b5a) unhandled, FIXME
    0:00:00.163641140  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b5a
    0:00:00.163677355  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_profile (990b67) unhandled, FIXME
    0:00:00.163705235  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b67
    0:00:00.163737480  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_level (990b68) unhandled, FIXME
    0:00:00.163764225  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b68
    0:00:00.163798470  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_loop_filter (990b6c) unhandled, FIXME
    0:00:00.163825605  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b6c
    0:00:00.163862365  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_loop_filter_beta_offset (990b6d) unhandled, FIXME
    0:00:00.163889900  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b6d
    0:00:00.163924800  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_loop_filter_tc_offset (990b6e) unhandled, FIXME
    0:00:00.163951815  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b6e
    0:00:00.163984975  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_refresh_type (990b6f) unhandled, FIXME
    0:00:00.164012180  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b6f
    0:00:00.164046405  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_num_of_i_frame_b_w_2_idr (990b70) unhandled, FIXME
    0:00:00.164073555  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b70
    0:00:00.164107220  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_lossless_encoding (990b71) unhandled, FIXME
    0:00:00.164134330  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b71
    0:00:00.164168545  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_constant_intra_prediction (990b72) unhandled, FIXME
    0:00:00.164195630  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b72
    0:00:00.164231485  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_wavefront (990b73) unhandled, FIXME
    0:00:00.164258830  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b73
    0:00:00.164292460  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_strong_intra_smoothing (990b76) unhandled, FIXME
    0:00:00.164319520  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b76
    0:00:00.164353615  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_max_num_of_candidate_mvs (990b77) unhandled, FIXME
    0:00:00.164380670  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b77
    0:00:00.164414035  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:386:gst_v4l2_fill_lists:<v4l2h264enc0> ControlID hevc_tmv_prediction (990b79) unhandled, FIXME
    0:00:00.164440790  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:281:gst_v4l2_fill_lists:<v4l2h264enc0> checking control 00990b79
    0:00:00.164467060  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:288:gst_v4l2_fill_lists:<v4l2h264enc0> controls finished
    0:00:00.164490210  1144     0x227db360 DEBUG                   v4l2 v4l2_calls.c:457:gst_v4l2_fill_lists:<v4l2h264enc0> done
    

    Also could this explain why even with v4l2-ctl I cannot change the controls of /dev/video1 ?

    root@am62axx-evm:~# v4l2-ctl -d /dev/video1 --set-ctrl=video_bitrate=60000 --verbose
    VIDIOC_QUERYCAP: ok
    VIDIOC_S_EXT_CTRLS: ok
    root@am62axx-evm:~# v4l2-ctl -d /dev/video1 --get-ctrl=video_bitrate
    video_bitrate: 0
    root@am62axx-evm:~#
    

  • Hi Aymeric,

    I just ran these  pipelines on my AM62A board and I do see the difference in the files created.

    gst-launch-1.0 -v v4l2src device=/dev/video-usb-cam0 num-buffers=100 ! \
    'image/jpeg, width=640, height=480, framerate=30/1' ! jpegdec ! videoconvert ! \
    v4l2h265enc ! filesink location=usb-default.264

    gst-launch-1.0 -v v4l2src device=/dev/video-usb-cam0 num-buffers=100 ! \
    'image/jpeg, width=640, height=480, framerate=30/1' ! jpegdec ! videoconvert ! \
    v4l2h265enc extra-controls="controls, hevc_profile=1, video_bitrate=10000, hevc_level=3" ! \
    filesink location=usb-profile-level-br.264

    gst-launch-1.0 -v v4l2src device=/dev/video-usb-cam0 num-buffers=100 ! \
    'image/jpeg, width=640, height=480, framerate=30/1' ! jpegdec ! videoconvert ! \
    v4l2h265enc extra-controls="controls, hevc_profile=0, video_bitrate=100000, hevc_level=5" ! \
    filesink location=usb-pr0-lvl5-b100000.264

    Also, there would be 9.1 SDK release happening next week and you can give it a try with the latest SDK release.

    Best Regards,

    Suren

  • Hi Suren, thank you for the test you ran!

    I tried the same pipeline as you and indeed the file sizes are different. However usb-pr0-lvl5-b100000.264 should be much larger than usb-profile-level-br.264 as the bitrate is 10 times higher. In both our screenshots usb-profile-level-br.264 is the largest file. 

    I also tried saving the files to a .mkv using the following commands:

    gst-launch-1.0 -v v4l2src device=/dev/video3 num-buffers=100 ! \
    'image/jpeg, width=640, height=480, framerate=30/1' ! jpegdec ! videoconvert ! \
    v4l2h265enc ! h265parse ! matroskamux ! filesink location=usb-default.mkv
    
    gst-launch-1.0 -v v4l2src device=/dev/video3 num-buffers=100 ! \
    'image/jpeg, width=640, height=480, framerate=30/1' ! jpegdec ! videoconvert ! \
    v4l2h265enc extra-controls="controls, hevc_profile=1, video_bitrate=10000, hevc_level=3" ! \
    h265parse ! matroskamux ! filesink location=usb-profile-level-br.mkv
    
    gst-launch-1.0 -v v4l2src device=/dev/video3 num-buffers=100 ! \
    'image/jpeg, width=640, height=480, framerate=30/1' ! jpegdec ! videoconvert ! \
    v4l2h265enc extra-controls="controls, hevc_profile=0, video_bitrate=100000, hevc_level=5" ! \
    h265parse ! matroskamux ! filesink location=usb-pr0-lvl5-b100000.mkv

    usb-default.mkv: usb-profile-level-br.mkv usb-pr0-lvl5-b100000.mkv

    Using MediaInfo, we can see the bitrate of usb-profile-level-br.mkv is 40 times higher than usb-pr0-lvl5-b100000.mkv but it should be 10 times lower.

    I really hope I am doing something wrong or the version 9.1 of the SDK will fix this behavior 

  • Hi Aymeric,

    I would suggest you retest your test with 9.1 SDK release and share your observations. 

    Appreciate if you Could you share more info your application for which you are evaluating AM62A? 

    Best Regards,

    Suren