Hardware x265 encoding using gstreamer

Hi,

is it possible to use hardware-based x265 encoding using gstreamer? It seems this that the my hardware (Xperia 10 III) supports it, since Android apps (Larix broadcaster) can do it, without much CPU usage. Media Codec Info lists OMX.qcom.video.encoder.hevc and c2.android.hevc.encoder.

Peeking around with gst-inspect-1.0, it seems that droidvenc and droidvdec provide encoders and decoders based on the Android HAL. The decoder seems to support video/x-h264, video/x-h265 and video/x-vp9, while the encoder only supports video/x-h264:

[defaultuser@Xperia10III ~]$ /usr/bin/gst-inspect-1.0 droidvenc
...
  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/x-h264
          stream-format: avc
              alignment: au
  
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      video/x-raw(memory:DroidVideoMetaData)
                 format: { (string)YV12 }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
...

[defaultuser@Xperia10III ~]$ /usr/bin/gst-inspect-1.0 droidvdec
...
  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/x-raw(memory:DroidMediaQueueBuffer)
                 format: { (string)NV12_64Z32, (string)YV12, (string)NV16, (string)NV12, (string)NV21, (string)YUY2, (string)RGBA, (string)RGBx, (string)RGB, (string)RGB16, (string)BGRA, (string)ENCODED }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
      video/x-raw
                 format: I420
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
  
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      video/x-h264
          stream-format: avc
              alignment: au
      video/x-vp9
      video/x-h265
...
1 Like