nv_omx_h264enc does not connect with rtph264pay

Tim Müller tim at centricular.com
Wed Jan 15 10:28:09 PST 2014


On Wed, 2014-01-15 at 09:06 -0800, ondrahnilicka wrote:

Hi Ondra,

> I would like to encode video on my Tegra T30 Apalis board with L4T (Angstrom
> Linux) to H.264 and send it over UDP. When I run the statement: 
> gst-launch -v videotestsrc ! ffmpegcolorspace ! 'video/x-raw-yuv' !
> nv_omx_h264enc ! rtph264pay ! fakesink silent=0   (or with udpsink)
> 
> i got this error: "Element doesn't implement handling of this stream."
> The whole error description is below.
> I tried many similar statements and compile the app in C with the same
> result. The problem is really between the nv_omx_h264enc and the rtph264pay
> plugins. I tried the x264enc encoder instead of the nv_omx_h264enc and it
> works. In rtph264pay sources i see that "payload" hasn't adjusted a
> clock-rate, but i don't know where to fix it. Maybe it is a plugin version
> problem.
> 
> Versions:
> gst-launch-0.10 version 0.10.36
> gst-plugins-good - 0.10.31-r13.7
> nv_omx_h264enc version 0.10.1
> 
> Does anybody have an idea?
> 
> Thank you.
> Ondra
> 
> ERROR: from element /GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0:
> Element doesn't implement handling of this stream. Please file a bug.
> Additional debug info:
> /home/tegradev/oe-core/build/out-eglibc/work/armv7ahf-vfp-neon-angstrom-linux-gnueabi/gst-plugins-base/0.10.36-r12/git/gst-libs/gst/rtp/gstbasertppayload.c(850):
> gst_basertppayload_prepare_push ():
> /GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0:
> subclass did not specify clock-rate

This implies, as the error message says, that the subclass (rtph264pay)
has not set the clock-rate, which it appears to do in its set_caps()
function [1].

My guess would be then that the nv_omx_h264enc element doesn't set any
caps on the buffer it pushes to rtph264pay, leading to the set_caps not
being called, and the clock-rate not set.

You can test if this is the case using

gst-launch-0.10 -v videotestsrc ! nv_omx_h264enc ! fakesink silent=true

and checking the output for fakesink's sink pad getting video/x-h264
caps set.

If that is the problem, an h264parse element might help, or a capsfilter
like

  .. ! video/x-h264,stream-format=byte-stream,alignment=nal ! rtph264pay

Cheers
 -Tim

[1]
http://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/gst/rtp/gstrtph264pay.c?h=0.10#n463

-- 
Tim Müller, Centricular Ltd - http://www.centricular.com



More information about the gstreamer-devel mailing list