IMX8MMRM-i.MX 8M Mini Applications Processor Reference Manual, Rev. 1, 03/2019, page 4778 onwards describes the features of the VPU_H1 encoder that is available on the iMX8MMini.
Running "gst-inspect-1.0 vpuenc_h264" yields a very limited set of controllable properties.
From what I can see, only the bitrate, GOP and Q factors can be adjusted (see listing below).
How are we meant to make use of the other features of the encoder (setting the profile, CBR vs VBR, etc.) Do you expect us to edit the drivers (imx-hantro.so) and GStreamer vpuenc_h264 plugin ourselves? Looking at the doc, I doubt we have enough information to do that... Or am I missing something?
From what I can see others have asked similar questions but I don't think there has been a clear answer given so far:
i.MX8MM h.264 main profile support
i.MX8M Mini VPU: Changing H.264 Profile
Rank primary + 1 (257)
Long-name IMX VPU-based AVC/H264 video encoder
...
Element Properties:
name : The name of the object
flags: readable, writable
String. Default: "vpuenc_h264-0"
parent : The parent of the object
flags: readable, writable
Object of type "GstObject"
qos : Handle Quality-of-Service events from downstream
flags: readable, writable
Boolean. Default: false
bitrate : set bit rate in kbps (0 for automatic)
flags: readable, writable
Unsigned Integer. Range: 0 - 2147483647 Default: 0
gop-size : How many frames a group-of-picture shall contain
flags: readable, writable
Unsigned Integer. Range: 0 - 32767 Default: 30
quant : set quant value: H.264(0-51) (-1 for automatic)
flags: readable, writable
Integer. Range: -1 - 51 Default: -1
you can refer to the imx8MM reference manual, for profile, you can refer to the VPU H1 Register 18 (SWREG18), for the bitrate, 0 for automatic, which means VBR, for CBR, refer to the RM, Minimum: 10kbps,Maximum: 40 Mbps at 1080p 60 fps