Tool/software: Linux
Dear Community,
I'm looking for support with the following issue:
We've a use case where we want to capture the output of one of the CRTCs and feed it to an IVA-HD encoder.
We've tried the following pipeline:
gst-launch-1.0 -e v4l2src device=/dev/video11 io-mode=dmabuf ! video/x-raw,format=NV12 ! ducatih264enc level=51 ! queue ! h264parse ! mp4mux ! filesink location=capture.mp4
Although this pipeline works, there's an unwanted memory copy which causes a significant frame drop (~23fps when it should be ~60fps).
We believe that the reason of the memory copy is due the buffers dequed from the omapwb-cap driver, when the pixel format is NV12, are not continuous in memory. However, from our understanding, the ducatih264enc GStreamer element expects them to be continuous in memory (that is, a single dmabuf-fd for both the Y and UV planes).
In addition, we think that the correct pixel format for NV12 exposed by the omapwb-cap driver should be V4L2_PIX_FMT_NV12M instead of V4L2_PIX_FMT_NV12.
Have TI ever managed to encode using GStreamer at 60 fps from the writeback v4l2 device? Is there any work in progress to address this?
For reference, our kernel version is 4.4.0-3 and we are using GStreamer 1.11.90.