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