glimagesink is not a great pick for autovideosink
glimagesink
is automatically picked by autovideosink
when available:
gst-launch-1.0 videotestsrc ! autovideosink -v
Setting pipeline to PAUSED ...
0:00:00.019496855 581347 0x1c24610 DEBUG autodetect gstautodetect.c:367:gst_auto_detect_detect:<autovideosink0> Creating new kid
0:00:00.019809556 581347 0x1c24610 LOG autodetect gstautodetect.c:273:gst_auto_detect_find_best:<autovideosink0> Trying to find usable video elements ...
0:00:00.033455152 581347 0x1c24610 DEBUG autodetect gstautodetect.c:283:gst_auto_detect_find_best:<autovideosink0> Testing glimagesink
0:00:00.034114590 581347 0x1c24610 DEBUG autodetect gstautodetect.c:291:gst_auto_detect_find_best:<autovideosink0> Checking caps: video/x-raw vs. video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string){ 2D, external-oes }; video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string){ 2D, external-oes }; video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string){ 2D, rectangle, external-oes }; video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, GRAY8, GRAY16_LE, GRAY16_BE, AYUV, VUYA, YUY2, UYVY, GBRA, GBR, RGBP, BGRP, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, NV16, NV61, A420, AV12, ARGB64, RGB16, BGR16, BGR10A2_LE, RGB10A2_LE, Y410, P010_10LE, P012_LE, P016_LE, Y210, Y212_LE, Y412_LE, NV12_16L32S, NV12_4L4 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string){ 2D, rectangle, external-oes }; video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string){ 2D, rectangle, external-oes }; video/x-raw(memory:GLMemory), format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, GRAY8, GRAY16_LE, GRAY16_BE, AYUV, VUYA, YUY2, UYVY, GBRA, GBR, RGBP, BGRP, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, NV16, NV61, A420, AV12, ARGB64, RGB16, BGR16, BGR10A2_LE, RGB10A2_LE, Y410, P010_10LE, P012_LE, P016_LE, Y210, Y212_LE, Y412_LE, NV12_16L32S, NV12_4L4 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string){ 2D, rectangle, external-oes }; video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, GRAY8, GRAY16_LE, GRAY16_BE, AYUV, VUYA, YUY2, UYVY, GBRA, GBR, RGBP, BGRP, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, NV16, NV61, A420, AV12, ARGB64, RGB16, BGR16, BGR10A2_LE, RGB10A2_LE, Y410, P010_10LE, P012_LE, P016_LE, Y210, Y212_LE, Y412_LE, NV12_16L32S, NV12_4L4 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, GRAY8, GRAY16_LE, GRAY16_BE, AYUV, VUYA, YUY2, UYVY, GBRA, GBR, RGBP, BGRP, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, NV16, NV61, A420, AV12, ARGB64, RGB16, BGR16, BGR10A2_LE, RGB10A2_LE, Y410, P010_10LE, P012_LE, P016_LE, Y210, Y212_LE, Y412_LE, NV12_16L32S, NV12_4L4 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:DMABuf, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:DMABuf), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:DMABuf, meta:GstVideoOverlayComposition), format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, GRAY8, GRAY16_LE, GRAY16_BE, AYUV, VUYA, YUY2, UYVY, GBRA, GBR, RGBP, BGRP, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, NV16, NV61, A420, AV12, ARGB64, RGB16, BGR16, BGR10A2_LE, RGB10A2_LE, Y410, P010_10LE, P012_LE, P016_LE, Y210, Y212_LE, Y412_LE, NV12_16L32S, NV12_4L4 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:DMABuf), format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, GRAY8, GRAY16_LE, GRAY16_BE, AYUV, VUYA, YUY2, UYVY, GBRA, GBR, RGBP, BGRP, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, NV16, NV61, A420, AV12, ARGB64, RGB16, BGR16, BGR10A2_LE, RGB10A2_LE, Y410, P010_10LE, P012_LE, P016_LE, Y210, Y212_LE, Y412_LE, NV12_16L32S, NV12_4L4 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, GRAY8, GRAY16_LE, GRAY16_BE, AYUV, VUYA, YUY2, UYVY, GBRA, GBR, RGBP, BGRP, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, NV16, NV61, A420, AV12, ARGB64, RGB16, BGR16, BGR10A2_LE, RGB10A2_LE, Y410, P010_10LE, P012_LE, P016_LE, Y210, Y212_LE, Y412_LE, NV12_16L32S, NV12_4L4 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, GRAY8, GRAY16_LE, GRAY16_BE, AYUV, VUYA, YUY2, UYVY, GBRA, GBR, RGBP, BGRP, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, NV16, NV61, A420, AV12, ARGB64, RGB16, BGR16, BGR10A2_LE, RGB10A2_LE, Y410, P010_10LE, P012_LE, P016_LE, Y210, Y212_LE, Y412_LE, NV12_16L32S, NV12_4L4 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:00.034153875 581347 0x1c24610 DEBUG autodetect gstautodetect.c:302:gst_auto_detect_find_best:<autovideosink0> Found compatible caps
0:00:00.071485071 581347 0x1c24610 DEBUG autodetect gstautodetect.c:309:gst_auto_detect_find_best:<autovideosink0> This worked!
0:00:00.072172900 581347 0x1c24610 DEBUG autodetect gstautodetect.c:326:gst_auto_detect_find_best:<autovideosink0> done trying
It's not ideal as it does not provide any window management support preventing the video to be resized or moved around.
gtksink
and gtkglsink
for example would be better choices for most use cases.
Is there any reason why glimagesink
has GST_RANK_SECONDARY
while the GTK sinks have GST_RANK_NONE
?