vdpaumpeg4dec from udpsrc

Amir Hassan amir at viel-zu.org
Thu Feb 19 06:08:01 PST 2015


i fixed the performance issue - mpeg4 decoding in an rtp pipeline via  
vdpau works. could someone _PLEASE_ give me a hint on how to provide the  
patches?

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

> 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