rtph264pay failed to work

jjinfo jjinfo at nudt.edu.cn
Mon Sep 26 07:13:03 PDT 2011


Hi,

rtph264pay failed to work on my ARM9 target board.
The target board is based on FSL Mx27 and the mfw_vpuencoder plugin is an video encoder based on MX27 VPU accelerator.

The gstreamer core is 0.10.35, base plugin is 0.10.34, and good plugin is 0.10.30.

The launching command and the debug message is as below:

gst-launch-0.10  -v --gst-debug=rtph264pay:5 videotestsrc ! 'video/x-raw-yuv,format=(fourcc)I420,width=176,height=144,framerate=30/1' ! mfw_vpuencoder codec-type=std_avc width=176 height=144 qp=35 gopsize=30 framerate=25 ! rtph264pay ! udpsink host=192.168.1.222 port=5434       

Setting pipeline to PAUSED ...
Product Info: i.MX27
VPU Version: firmware 2.2.5; libvpu: 3.3.2
MFW_GST_VPU_ENCODER_PLUGIN  build on Sep 22 2011 14:05:53.
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0 .GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)176, height=(int)144, framerate=(fraction)30/1, color-matrix=(string)sdtv, chroma-site=(string)mpeg2
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.G stPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)176, height=(int)144, framerate=(fraction)30/1, color-matrix=(string)sdtv, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.G stPad:sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)176, height=(int)144, framerate=(fraction)30/1, color-matrix=(string)sdtv, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/Mfw GstVPU_Enc:mfwgstvpu_enc0.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)176, height=(int)144, framerate=(fraction)30/1, color-matrix=(string)sdtv, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/Mfw GstVPU_Enc:mfwgstvpu_enc0.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)176, height=(int)144, framerate=(fraction)30/1, color-matrix=(string)sdtv, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/MfwGstVPU_Enc:mfwgstvpu_enc0.GstPad:src: caps = video/x-h264, height=(int)144, width=(int)176, framerate=(fraction)25/1
0:00:21.673947217  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:942:gst_rtp_h264_pay_handle_buffer:<rtph264pay0> got 1327 bytes

0:00:21.675190375  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:1003:gst_rtp_h264_pay_handle_buffer:<rtph264pay0> found first start at 1, bytes left 1326

0:00:21.675997743  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:1036:gst_rtp_h264_pay_handle_buffer:<rtph264pay0> found next start at 9 of size 9
0:00:21.676328420  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:539:gst_rtp_h264_pay_decode_nal: NAL payload len=9
0:00:21.676657066  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:551:gst_rtp_h264_pay_decode_nal: Found SPS 0 3 7 Len=9

0:00:21.677548269  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:1036:gst_rtp_h264_pay_handle_buffer:<rtph264pay0> found next start at 5 of size 5
0:00:21.677884961  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:539:gst_rtp_h264_pay_decode_nal: NAL payload len=5
0:00:21.678206164  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:561:gst_rtp_h264_pay_decode_nal: Found PPS 0 3 8 Len = 5


0:00:21.679047517  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:521:next_start_code: Cannot find next NAL start code. returning 1303
0:00:21.679530675  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:1036:gst_rtp_h264_pay_handle_buffer:<rtph264pay0> found next start at 1303 of size 1303
0:00:21.679883157  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:539:gst_rtp_h264_pay_decode_nal: NAL payload len=1303
0:00:21.680218269  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:570:gst_rtp_h264_pay_decode_nal: NAL: 0 3 5 Len = 1303
/GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0.GstPad:src: caps = application/x-rtp, media=(string)NULL, clock-rate=(int)0 , encoding-name=(string)NULL, sprop-parameter-sets=(string)\"Z0IAHqaCxOQA\\,aM44gAA\\=\", payload=(int)96, ssrc=(uint)3064141093, clock-base=(uint)2131484364, seqnum-base=(uint)3426
0:00:21.683859848  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:705:gst_rtp_h264_pay_payload_nal:<rtph264pay0> Processing Buffer with NAL TYPE=7
0:00:21.684295187  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:753:gst_rtp_h264_pay_payload_nal:<rtph264pay0> NAL Unit fit in one packet datasize=8 mtu=1400
0:00:21.684848044  1759    0xbdb48 DEBUG             rtph264pay gstrtph264pay.c:801:gst_rtp_h264_pay_payload_nal:<rtph264pay0> Copying 8 bytes to outbuf
ERROR: from element /GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0: Element doesn't implement handling of this stream. Please file a bug.
Additional debug info:
gstbasertppayload.c(843): gst_basertppayload_prepare_push (): /GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0:
subclass did not specify clock-rate
ERROR: pipeline doesn't want to preroll.


Setting pipeline to NULL ...
/GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0.GstPad:src: caps = NULL

(gst-launch-0.10:1759): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GstMiniObject'

(gst-launch-0.10:1759): GStreamer-CRITICAL **: gst_mini_object_unref: assertion `GST_IS_MINI_OBJECT (mini_object)' failed
/GstPipeline:pipeline0/MfwGstVPU_Enc:mfwgstvpu_enc0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/MfwGstVPU_Enc:mfwgstvpu_enc0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = NULL
Freeing pipeline ...


The debug message "subclass did not specify clock-rate" comes from
gst_basertppayload_prepare_push() in gstbasertppayload.c, when payload->clock_rate is 0.

In gstrtph264pay.c, there is a function gst_rtp_h264_pay_setcaps() which set the clock_rate field
by calling gst_basertppayload_set_options (basepayload, "video", TRUE, "H264", 90000).
So it seems that function gst_rtp_h264_pay_setcaps() is never called.

What's the functionality of the "set_caps" field of structure GstBaseRTPPayloadClass?
When it got called?

Regards,
Robbie
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20110926/8fa77abf/attachment.html>


More information about the gstreamer-devel mailing list