[Bug 726325] RFC: Add tunneling support.

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Mar 18 04:35:45 PDT 2014


https://bugzilla.gnome.org/show_bug.cgi?id=726325
  GStreamer | gst-omx | git

Julien Isorce <julien.isorce> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #271868|none                        |needs-work
             status|                            |

--- Comment #16 from Julien Isorce <julien.isorce at gmail.com> 2014-03-18 12:00:11 UTC ---
Review of attachment 271868:
 --> (https://bugzilla.gnome.org/review?bug=726325&attachment=271868)

::: omx/gstomxvideodec.c
@@ +51,3 @@
 #include "gstomxvideo.h"
 #include "gstomxvideodec.h"
+#include "gstomxvideoenc.h"

I guess this is a residual of your initial try and then you forgot to remove it
? Otherwise I do not see why it's useful

@@ +1146,3 @@
   gst_video_codec_state_unref (state);

+  pool = gst_video_decoder_get_buffer_pool (GST_VIDEO_DECODER (self));

I think you never unref the pool
(http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-get-buffer-pool)

@@ +1154,3 @@
+    if (gst_omx_setup_tunnel (self->dec_out_port, op->port) != OMX_ErrorNone)
+      GST_WARNING_OBJECT (self, "Failed to setup tunnel");
+  }

will it fallback to non-tunneling mode if it fails to setup a tunnel ?

@@ +2230,3 @@
+  if (self->dec_out_port->tunneled) {
+    frame->output_buffer = gst_buffer_new ();
+    gst_video_decoder_finish_frame (GST_VIDEO_DECODER (self), frame);

Try to just use gst_video_decoder_release_frame
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-GstVideoDecoder.html#gst-video-decoder-release-frame

Because gst_video_decoder_finish_frame actually push the data.

Note that on the gstomxencoder side you do need to have
gst_omx_video_enc_handle_frame being called. In your other patch you just unref
the frame. Better to no have the chain to be called at all in case of
GST_PAD_PROBE_TYPE_BUFFER + tunnel

@@ +2367,3 @@
     GST_ERROR_OBJECT (self, "Failed to drain component: %s (0x%08x)",
         gst_omx_error_to_string (err), err);
+    g_mutex_unlock (&self->drain_lock);

please put this in another patch

@@ +2381,3 @@
+        g_cond_wait_until (&self->drain_cond, &self->drain_lock, wait_until);
+
+    if (!result)

please put this in another patch

@@ +2395,3 @@
   GST_VIDEO_DECODER_STREAM_LOCK (self);

   self->started = FALSE;

Is it possible to avoid starting the GstTask when tunneling
http://cgit.freedesktop.org/gstreamer/gst-omx/tree/omx/gstomxvideodec.c#n1937 ?
I mean is gst_omx_video_dec_loop necessary
http://cgit.freedesktop.org/gstreamer/gst-omx/tree/omx/gstomxvideodec.c#n1161 ?

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list