vdpaumpeg4dec from udpsrc

Amir Hassan amir at viel-zu.org
Wed Feb 18 09:42:30 PST 2015


well, in case someone runs into the same problem:
i was able to fix the frame skipping problem by returning GST_FLOW_OK  
instead of GST_FLOW_CUSTOM_ERROR and delaying frame decoding until the  
mpeg4 stream is completely configured. so, vdpaumpeg4dec basically works  
with an udpsrc - using xvimagesink as videosink will render the video (but  
with bad performance). but when i use "vdpauvideopostprocess ! vdpausink"  
as video sink the pipeline plays but no video is displayed.
any hints on what could cause that behavior would be really great!

thanks,
amir

On Tue, 17 Feb 2015 17:40:41 +0100, Amir Hassan <amir at viel-zu.org> wrote:

> 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
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


More information about the gstreamer-devel mailing list