vdpaumpeg4dec from udpsrc

Amir Hassan amir at viel-zu.org
Tue Feb 17 08:40:41 PST 2015


Hi!

i'm experimenting with vdpau on an armhf (a20 soc/sunxi kernel) embedded  
system and i basically have working hardware acceleration, but it all  
breaks when i try to stream over udp (with and without RTP).

this works:
gst-launch-0.10 -v videotestsrc ! ffenc_mpeg4 ! queue ! ffdec_mpeg4 !  
vdpauvideopostprocess ! vdpausink

this doesn't:
$ GST_DEBUG=vdpaumpeg4dec:5 gst-launch-0.10 -v udpsrc port=5000 !  
'application/x-rtp, media=(string)video, clock-rate=(int)90000,  
encoding-name=(string)MP4V-ES, payload=(int)96' ! rtpmp4vdepay !  
vdpaumpeg4dec ! vdpauvideopostprocess ! vdpausink
Setting pipeline to PAUSED ...
[VDPAU SUNXI] VE version 0x1623 opened.
/GstPipeline:pipeline0/GstVdpVideoPostProcess:vdpvideopostprocess0.GstVdpOutputSrcPad:src:  
device = ((GstVdpDevice*) 0x136b818)
/GstPipeline:pipeline0/GstVdpMpeg4Dec:vdpmpeg4dec0.GstVdpVideoSrcPad:src:  
device = ((GstVdpDevice*) 0x136b818)
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps =  
application/x-rtp, media=(string)video, clock-rate=(int)90000,  
encoding-name=(string)MP4V-ES, payload=(int)96
/GstPipeline:pipeline0/GstRtpMP4VDepay:rtpmp4vdepay0.GstPad:src: caps =  
video/mpeg, mpegversion=(int)4, systemstream=(boolean)false
/GstPipeline:pipeline0/GstRtpMP4VDepay:rtpmp4vdepay0.GstPad:sink: caps =  
application/x-rtp, media=(string)video, clock-rate=(int)90000,  
encoding-name=(string)MP4V-ES, payload=(int)96
/GstPipeline:pipeline0/GstVdpMpeg4Dec:vdpmpeg4dec0.GstPad:sink: caps =  
video/mpeg, mpegversion=(int)4, systemstream=(boolean)false
0:00:02.875335294  3532  0x1358e60 WARN           vdpaumpeg4dec  
mpeg4/gstvdpmpeg4dec.c:196:gst_vdp_mpeg4_dec_handle_configuration:  
Skipping frame since we're not configured yet
ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: Internal  
data flow error.
Additional debug info:
gstbasesrc.c(2625): gst_base_src_loop ():  
/GstPipeline:pipeline0/GstUDPSrc:udpsrc0:
streaming task paused, reason custom-error (-100)
Execution ended after 2126883001 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/GstVdpMpeg4Dec:vdpmpeg4dec0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstRtpMP4VDepay:rtpmp4vdepay0.GstPad:src: caps =  
NULL
/GstPipeline:pipeline0/GstRtpMP4VDepay:rtpmp4vdepay0.GstPad:sink: caps =  
NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
Freeing pipeline ...

somehow the vdpau code expects the mpeg4 stream to be configured before  
any frames are decoded. the warning suggests that the code would tolerate  
this situation but right after the frame is consumed(?) the custom flow  
error is returned in gstvdpmpeg4dec.c.
could someone more enlightened explain why it doesn't work with a udpsrc  
and maybe what is necessary to fix it?
i'd try to fix it if i just understood what the actually problem is.

greets,
amir


More information about the gstreamer-devel mailing list