How to display YUV frame and not use gpu&cpu cover to rgb ?

My platform is Tegra X1 and Ubuntu 32bit.
I wanna to display yuv video frame,and gstreamer look likes work in X WINDOW ,I try to use opengl and through PBO(DMA Data trans )to update texture ,but opengl must be work in x window,i wanna to direct write FrameBuffer but framebuffer only supposed RGB data ,and i wanna using nvoverlaysink ,but nvoverlaysink is only through gstreamer to use,and gstreamer was depended on x server & x11,how can i do and sovel the probleam ,thanks . -_-

Hi songshifang,

Only nveglglessink depends on X11, nvoverlaysink and nvhdmioverlaysink don’t depend on X11.
You can use nvoverlaysink to display raw yuv directly, below is the example(pipeline) for your reference:

gst-launch-1.0 filesrc location=1080p_6secs.yuv ! videoparse width= 1920 height= 1080 format=2 framerate=30 ! nvoverlaysink

For develop interface, you can use appsrc + nvoverlaysink to feed yuv image.


Thanks , But my problen has not solved .I wanna display UYVY raw image that I can contral display ever call function in C/C++。and i feed UYVY data every time .In addition,I wanna display text or PNG image blending framebuffer after display UYVU image without X Window.and do not use gst-launch. and this is my Code ©

gst_init (&argc, &argv);
loop = g_main_loop_new (NULL, FALSE);
pipeline = gst_pipeline_new (“my-pipeline”);
src = gst_element_factory_make (“videotestsrc”, “src”);
filter = gst_element_factory_make (“capsfilter”, “filter”);
csp = gst_element_factory_make (“videoconvert”, “csp”);
sink = gst_element_factory_make (“nvhdmioverlaysink”, “sink”);
gst_bin_add_many (GST_BIN (pipeline), src, filter,sink, NULL);
gst_element_link_many (src, filter, sink, NULL);
filtercaps = gst_caps_new_simple (“video/x-raw”,
“format”, G_TYPE_STRING, “UYVY”,
“width”, G_TYPE_INT, 1920,
“height”, G_TYPE_INT, 1080,
“framerate”, GST_TYPE_FRACTION, 50, 1,
g_object_set (G_OBJECT (filter), “caps”, filtercaps, NULL);
gst_caps_unref (filtercaps);
pad = gst_element_get_static_pad (src, “src”);
gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER,
(GstPadProbeCallback) cb_have_data, NULL, NULL);
gst_object_unref (pad);
gst_element_set_state (pipeline, GST_STATE_PLAYING);
/* wait until it’s up and running or failed */
if (gst_element_get_state (pipeline, NULL, NULL, -1) == GST_STATE_CHANGE_FAILURE) {
g_error (“Failed to go into PLAYING state”);
if sink changed xvimagesink in X WINDOW it can be play . but nvhdmioverlaysink is not display in tty .program print “Failed to go into PLAYING state” and gst_element_set_state (pipeline, GST_STATE_PLAYING) function called was failed. How can i do ?