vdpaumpeg4dec from udpsrc

Amir Hassan amir at viel-zu.org
Wed Feb 18 11:49:00 PST 2015


i fixed the vdapusink issue too. the plugin was unable to deduct the  
framerate from caps. so now the pipeline is actually playing but i'm  
having performance issues. what's the best (or common) way to profile a  
gstreamer pipeline?

On Wed, 18 Feb 2015 18:42:30 +0100, Amir Hassan <amir at viel-zu.org> wrote:

> 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
> _______________________________________________
> 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