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