omxvideoenc: use subframe base class API
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Fri, 31 Aug 2018 10:24:34 +0000 (12:24 +0200)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Sun, 22 Dec 2019 05:43:40 +0000 (05:43 +0000)
Use subframe base class support.

omx/gstomxvideoenc.c

index 7c7bd95..c98d239 100644 (file)
@@ -1429,9 +1429,19 @@ gst_omx_video_enc_handle_output_frame (GstOMXVideoEnc * self, GstOMXPort * port,
     }
 
     if (frame) {
-      frame->output_buffer = outbuf;
-      flow_ret =
-          gst_video_encoder_finish_frame (GST_VIDEO_ENCODER (self), frame);
+      if ((buf->omx_buf->nFlags & OMX_BUFFERFLAG_ENDOFFRAME)
+          || !gst_omx_port_get_subframe (self->enc_out_port)) {
+        frame->output_buffer = outbuf;
+        flow_ret =
+            gst_video_encoder_finish_frame (GST_VIDEO_ENCODER (self), frame);
+        if (buf->omx_buf->nFlags | ~OMX_BUFFERFLAG_ENDOFFRAME)
+          GST_WARNING_OBJECT (self,
+              "OMX_BUFFERFLAG_ENDOFFRAME is missing flags");
+      } else {
+        flow_ret =
+            gst_video_encoder_finish_subframe (GST_VIDEO_ENCODER (self), frame);
+        gst_video_codec_frame_unref (frame);
+      }
     } else {
       GST_ERROR_OBJECT (self, "No corresponding frame found");
       flow_ret = gst_pad_push (GST_VIDEO_ENCODER_SRC_PAD (self), outbuf);