textoverlay/imageoverlay on udp receive stream

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

textoverlay/imageoverlay on udp receive stream

riteshSTPL
I am using gstreamer-1.0 v1.2.4 on nVidia Jetson TX1.
I want to add text/image overlay on udp receive stream.

Pipeline for stream preview without overlay.
gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! h264parse ! omxh264dec ! autovideosink sync=false async=false -e

I tried below pipeline but gives no video.
gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! h264parse ! omxh264dec ! textoverlay text="Recording..." halignment=0 valignment=1 ! autovideosink sync=false async=false -e
Setting pipeline to PAUSED ...
Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingPipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
NvMMLiteOpen : Block : BlockType = 261
TVMR: NvMMLiteTVMRDecBlockOpen: 6736: NvMMLiteBlockOpen
NvMMLiteBlockCreate : Block : BlockType = 261
TVMR: cbBeginSequence: 803: BeginSequence  1920x1088, bVPR = 0
TVMR: cbBeginSequence: 1147: DecodeBuffers = 14, pnvsi->eCodec = 4, codec = 0
TVMR: cbBeginSequence: 1206: Display Resolution : (1920x1080)
TVMR: cbBeginSequence: 1207: Display Aspect Ratio : (1920x1080)
TVMR: cbBeginSequence: 1247: ColorFormat : 5
TVMR: cbBeginSequence:1258 ColorSpace = NvColorSpace_YCbCr709
TVMR: cbBeginSequence: 1429: SurfaceLayout = 3
TVMR: cbBeginSequence: 1474: NumOfSurfaces = 18, InteraceStream = 0, InterlaceEnabled = 0, bSecure = 0, MVC = 0 Semiplanar = 1, bReinit = 1, BitDepthForSurface = 8
Allocating new output: 1920x1088 (x 20), ThumbnailMode = 0
TVMR: FrameRate = 78
TVMR: NVDEC LowCorner Freq = (468000 * 1024)
---> TVMR: Video-conferencing detected !!!!!!!!!
TVMR: FrameRate = 60.004200
TVMR: FrameRate = 59.994481


I tried below pipeline but gives video without image overlay but with following debug error.
gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! h264parse ! omxh264dec ! gdkpixbufoverlay location=record.jpg offset-x=20 offset-y=20 ! autovideosink sync=false async=false -e
Additional debug info:
gstvideofilter.c(339): gst_video_filter_transform_ip (): /GstPipeline:pipeline0/GstGdkPixbufOverlay:gdkpixbufoverlay0:
invalid video buffer received
WARNING: from element /GstPipeline:pipeline0/GstGdkPixbufOverlay:gdkpixbufoverlay0: Internal GStreamer error: code not implemented.  Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.


So whats wrong in this?
Reply | Threaded
Open this post in threaded view
|

Re: textoverlay/imageoverlay on udp receive stream

Sebastian Dröge-3
On Di, 2016-06-14 at 22:58 -0700, riteshSTPL wrote:


> I tried below pipeline but gives video without image overlay but with
> following debug error.
> *gst-launch-1.0 udpsrc port=5000 !
> application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay !
> h264parse !
> omxh264dec ! gdkpixbufoverlay location=record.jpg offset-x=20 offset-
> y=20 !
> autovideosink sync=false async=false -e*
> /Additional debug info:
> gstvideofilter.c(339): gst_video_filter_transform_ip ():
> /GstPipeline:pipeline0/GstGdkPixbufOverlay:gdkpixbufoverlay0:
> invalid video buffer received
> WARNING: from element
> /GstPipeline:pipeline0/GstGdkPixbufOverlay:gdkpixbufoverlay0:
> Internal
> GStreamer error: code not implemented.  Please file a bug at
> http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer./
This means that the NVIDIA omxh264dec is sending a buffer downstream
that can't be mapped to system memory with gst_video_frame_map(), while
not advertising this problem in the caps.

This is a deficiency in the NVIDIA decoder implementation, but even if
they fix that to properly advertise this, you would only get a proper
error instead. Unless there is a way to map the memory that comes out
of the decoder to system memory, you will have to use other means of
overlay.

For example usage of the OpenGL based overlay elements might be an
option here, I would assume that the NVIDIA decoder outputs something
that can be used in OpenGL.

--

Sebastian Dröge, Centricular Ltd · http://www.centricular.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (968 bytes) Download Attachment