I’m getting the following when running gst-inspect-1.0 gtk4paintablesink
Need to add that this only appears the first time I run gst-inspect-1.0 gtk4paintablesink after a reboot or from a freshly launched terminal window. Any subsequent request doesn’t include the errors – this has been consistent for some time and across different vs of macOS.
My environment: mac M1 (Apple Silicon) macOS = Sequoia 15.5; gstreamer = 1.26.2; gtk4 = 4.18.5; gtk4paintablesink = 0.14.0-alpha.1-RELEASE (via gst-plugins-rs); gtk+3 = 3.24.43
BACKGROUND: my app requires gtk4 and gtk4paintablesink — despite output below unable to remove gtk+3 as gstreamer requires it:
brew uninstall gtk+3
Error: Refusing to uninstall /opt/homebrew/Cellar/gtk+3/3.24.43
because it is required by gstreamer, which is currently installed.
You can override this and force removal with:
brew uninstall --ignore-dependencies gtk+3
Please advise how I can resolve this. Any tips would be very much appreciated. I’m having issues with gtk4paintablesink and believe if I can resolve these it may solve those issues as well. Thanks in advance.
OUTPUT:
gst-inspect-1.0 gtk4paintablesink
objc[344]: Class gdkCoreCursor is implemented in both /opt/homebrew/Cellar/gtk4/4.18.5/lib/libgtk-4.1.dylib (0x104282d00) and /opt/homebrew/Cellar/gtk+3/3.24.43/lib/libgdk-3.0.dylib (0x1056ad628). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.
objc[344]: Class ResultReceiver is implemented in both /opt/homebrew/Cellar/gtk4/4.18.5/lib/libgtk-4.1.dylib (0x104282b48) and /opt/homebrew/Cellar/gtk+3/3.24.43/lib/libgtk-3.0.dylib (0x106361e00). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.
objc[344]: Class GtkApplicationQuartzDelegate is implemented in both /opt/homebrew/Cellar/gtk4/4.18.5/lib/libgtk-4.1.dylib (0x104282b70) and /opt/homebrew/Cellar/gtk+3/3.24.43/lib/libgtk-3.0.dylib (0x106361e28). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.
objc[344]: Class GNSMenuItem is implemented in both /opt/homebrew/Cellar/gtk4/4.18.5/lib/libgtk-4.1.dylib (0x104282c10) and /opt/homebrew/Cellar/gtk+3/3.24.43/lib/libgtk-3.0.dylib (0x106361e78). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.
objc[344]: Class GNSMenu is implemented in both /opt/homebrew/Cellar/gtk4/4.18.5/lib/libgtk-4.1.dylib (0x104282c38) and /opt/homebrew/Cellar/gtk+3/3.24.43/lib/libgtk-3.0.dylib (0x106361ea0). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.
objc[344]: Class FilterComboBox is implemented in both /opt/homebrew/Cellar/gtk4/4.18.5/lib/libgtk-4.1.dylib (0x104282cb0) and /opt/homebrew/Cellar/gtk+3/3.24.43/lib/libgtk-3.0.dylib (0x106361f18). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.
(gst-plugin-scanner:344): GLib-GIRepository-WARNING **: 12:19:28.475: Failed to load shared library 'libgobject-2.0.0.dylib' referenced by the typelib: dlopen(libgobject-2.0.0.dylib, 0x0009): tried: 'libgobject-2.0.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibgobject-2.0.0.dylib' (no such file), '/usr/lib/libgobject-2.0.0.dylib' (no such file, not in dyld cache), 'libgobject-2.0.0.dylib' (no such file)
(gst-plugin-scanner:344): GLib-GIRepository-WARNING **: 12:19:28.475: Failed to load shared library 'libglib-2.0.0.dylib' referenced by the typelib: dlopen(libglib-2.0.0.dylib, 0x0009): tried: 'libglib-2.0.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibglib-2.0.0.dylib' (no such file), '/usr/lib/libglib-2.0.0.dylib' (no such file, not in dyld cache), 'libglib-2.0.0.dylib' (no such file)
** (gst-plugin-scanner:344): CRITICAL **: 12:19:28.475: can't find gi.repository.Gst
Traceback (most recent call last):
File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 921, in _load_unlocked
File "<frozen importlib._bootstrap>", line 813, in module_from_spec
File "/opt/homebrew/lib/python3.13/site-packages/gi/importer.py", line 146, in create_module
importlib.import_module('gi.repository.' + dep.split("-")[0])
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.3_1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/importlib/__init__.py", line 88, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 921, in _load_unlocked
File "<frozen importlib._bootstrap>", line 813, in module_from_spec
File "/opt/homebrew/lib/python3.13/site-packages/gi/importer.py", line 146, in create_module
importlib.import_module('gi.repository.' + dep.split("-")[0])
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/python@3.13/3.13.3_1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/importlib/__init__.py", line 88, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 921, in _load_unlocked
File "<frozen importlib._bootstrap>", line 813, in module_from_spec
File "/opt/homebrew/lib/python3.13/site-packages/gi/importer.py", line 147, in create_module
dynamic_module = load_overrides(introspection_module)
File "/opt/homebrew/lib/python3.13/site-packages/gi/overrides/__init__.py", line 98, in load_overrides
override_mod = importlib.import_module(override_package_name)
File "/opt/homebrew/Cellar/python@3.13/3.13.3_1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/importlib/__init__.py", line 88, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.13/site-packages/gi/overrides/GLib.py", line 37, in <module>
from gi import _option as option
File "/opt/homebrew/lib/python3.13/site-packages/gi/_option.py", line 41, in <module>
OPTION_CONTEXT_ERROR_QUARK = GLib.quark_to_string(GLib.option_error_quark())
~~~~~~~~~~~~~~~~~~~~~~~^^
gi._error.GError: gi-invoke-error-quark: Could not locate g_option_error_quark: dlopen(libglib-2.0.0.dylib, 0x0009): tried: 'libglib-2.0.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibglib-2.0.0.dylib' (no such file), '/usr/lib/libglib-2.0.0.dylib' (no such file, not in dyld cache), 'libglib-2.0.0.dylib' (no such file) (1)
Factory Details:
Rank none (0)
Long-name GTK 4 Paintable Sink
Klass Sink/Video
Description A GTK 4 Paintable sink
Author Bilal Elmoussaoui <bil.elmoussaoui@gmail.com>, Jordan Petridis <jordan@centricular.com>, Sebastian Dröge <sebastian@centricular.com>
Documentation https://gstreamer.freedesktop.org/documentation/gtk4/#gtk4paintablesink-page
Plugin Details:
Name gtk4
Description GStreamer GTK 4 sink element
Filename /opt/homebrew/Cellar/gstreamer/gtk4plugin/gstreamer-1.0/libgstgtk4.dylib
Version 0.14.0-alpha.1-RELEASE
License MPL
Source module gst-plugin-gtk4
Documentation https://gstreamer.freedesktop.org/documentation/gtk4/
Source release date 2025-06-05
Binary package gst-plugin-gtk4
Origin URL https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs
GObject
+----GInitiallyUnowned
+----GstObject
+----GstElement
+----GstBaseSink
+----GstVideoSink
+----GstGtk4PaintableSink
Implemented Interfaces:
GstChildProxy
Element Flags:
- SINK
Pad Templates:
SINK template: 'sink'
Availability: Always
Capabilities:
video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition)
format: { (string)RGBA, (string)RGB }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
texture-target: 2D
video/x-raw(memory:GLMemory)
format: { (string)RGBA, (string)RGB }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
texture-target: 2D
video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition)
format: { (string)BGRA, (string)ARGB, (string)RGBA, (string)ABGR, (string)RGB, (string)BGR }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
video/x-raw(meta:GstVideoOverlayComposition)
format: { (string)BGRA, (string)ARGB, (string)RGBA, (string)ABGR, (string)RGB, (string)BGR }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
video/x-raw
format: { (string)BGRA, (string)ARGB, (string)RGBA, (string)ABGR, (string)RGB, (string)BGR }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
Element has no clocking capabilities.
Element has no URI handling capabilities.
Pads:
SINK: 'sink'
Pad Template: 'sink'
Element Properties:
async : Go asynchronously to PAUSED
flags: readable, writable
Boolean. Default: true
blocksize : Size in bytes to pull per buffer (0 = default)
flags: readable, writable
Unsigned Integer. Range: 0 - 4294967295 Default: 4096
enable-last-sample : Enable the last-sample property
flags: readable, writable
Boolean. Default: true
last-sample : The last sample received in the sink
flags: readable
Boxed pointer of type "GstSample"
max-bitrate : The maximum bits per second to render (0 = disabled)
flags: readable, writable
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
max-lateness : Maximum number of nanoseconds that a buffer can be late before it is dropped (-1 unlimited)
flags: readable, writable
Integer64. Range: -1 - 9223372036854775807 Default: 5000000
name : The name of the object
flags: readable, writable
String. Default: "gtk4paintablesink0"
paintable : The Paintable the sink renders to
flags: readable
Object of type "GstGtk4Paintable"
parent : The parent of the object
flags: readable, writable
Object of type "GstObject"
processing-deadline : Maximum processing time for a buffer in nanoseconds
flags: readable, writable
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 15000000
qos : Generate Quality-of-Service events upstream
flags: readable, writable
Boolean. Default: true
render-delay : Additional render delay of the sink in nanoseconds
flags: readable, writable
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
show-preroll-frame : Whether to render video frames during preroll
flags: readable, writable
Boolean. Default: true
stats : Sink Statistics
flags: readable
Boxed pointer of type "GstStructure"
average-rate: 0
dropped: 0
rendered: 0
sync : Sync on the clock
flags: readable, writable
Boolean. Default: true
throttle-time : The time to keep between rendered buffers (0 = disabled)
flags: readable, writable
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
ts-offset : Timestamp offset in nanoseconds
flags: readable, writable
Integer64. Range: -9223372036854775808 - 9223372036854775807 Default: 0
CT@betty gst-plugins-rs-main %
CT@betty gst-plugins-rs-main %
CT@betty gst-plugins-rs-main %
CT@betty gst-plugins-rs-main % gst-inspect-1.0 gtk4paintablesink
Factory Details:
Rank none (0)
Long-name GTK 4 Paintable Sink
Klass Sink/Video
Description A GTK 4 Paintable sink
Author Bilal Elmoussaoui <bil.elmoussaoui@gmail.com>, Jordan Petridis <jordan@centricular.com>, Sebastian Dröge <sebastian@centricular.com>
Documentation https://gstreamer.freedesktop.org/documentation/gtk4/#gtk4paintablesink-page
Plugin Details:
Name gtk4
Description GStreamer GTK 4 sink element
Filename /opt/homebrew/Cellar/gstreamer/gtk4plugin/gstreamer-1.0/libgstgtk4.dylib
Version 0.14.0-alpha.1-RELEASE
License MPL
Source module gst-plugin-gtk4
Documentation https://gstreamer.freedesktop.org/documentation/gtk4/
Source release date 2025-06-05
Binary package gst-plugin-gtk4
Origin URL https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs
GObject
+----GInitiallyUnowned
+----GstObject
+----GstElement
+----GstBaseSink
+----GstVideoSink
+----GstGtk4PaintableSink
Implemented Interfaces:
GstChildProxy
Element Flags:
- SINK
Pad Templates:
SINK template: 'sink'
Availability: Always
Capabilities:
video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition)
format: { (string)RGBA, (string)RGB }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
texture-target: 2D
video/x-raw(memory:GLMemory)
format: { (string)RGBA, (string)RGB }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
texture-target: 2D
video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition)
format: { (string)BGRA, (string)ARGB, (string)RGBA, (string)ABGR, (string)RGB, (string)BGR }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
video/x-raw(meta:GstVideoOverlayComposition)
format: { (string)BGRA, (string)ARGB, (string)RGBA, (string)ABGR, (string)RGB, (string)BGR }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
video/x-raw
format: { (string)BGRA, (string)ARGB, (string)RGBA, (string)ABGR, (string)RGB, (string)BGR }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
Element has no clocking capabilities.
Element has no URI handling capabilities.
Pads:
SINK: 'sink'
Pad Template: 'sink'
Element Properties:
async : Go asynchronously to PAUSED
flags: readable, writable
Boolean. Default: true
blocksize : Size in bytes to pull per buffer (0 = default)
flags: readable, writable
Unsigned Integer. Range: 0 - 4294967295 Default: 4096
enable-last-sample : Enable the last-sample property
flags: readable, writable
Boolean. Default: true
last-sample : The last sample received in the sink
flags: readable
Boxed pointer of type "GstSample"
max-bitrate : The maximum bits per second to render (0 = disabled)
flags: readable, writable
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
max-lateness : Maximum number of nanoseconds that a buffer can be late before it is dropped (-1 unlimited)
flags: readable, writable
Integer64. Range: -1 - 9223372036854775807 Default: 5000000
name : The name of the object
flags: readable, writable
String. Default: "gtk4paintablesink0"
paintable : The Paintable the sink renders to
flags: readable
Object of type "GstGtk4Paintable"
parent : The parent of the object
flags: readable, writable
Object of type "GstObject"
processing-deadline : Maximum processing time for a buffer in nanoseconds
flags: readable, writable
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 15000000
qos : Generate Quality-of-Service events upstream
flags: readable, writable
Boolean. Default: true
render-delay : Additional render delay of the sink in nanoseconds
flags: readable, writable
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
show-preroll-frame : Whether to render video frames during preroll
flags: readable, writable
Boolean. Default: true
stats : Sink Statistics
flags: readable
Boxed pointer of type "GstStructure"
average-rate: 0
dropped: 0
rendered: 0
sync : Sync on the clock
flags: readable, writable
Boolean. Default: true
throttle-time : The time to keep between rendered buffers (0 = disabled)
flags: readable, writable
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
ts-offset : Timestamp offset in nanoseconds
flags: readable, writable
Integer64. Range: -9223372036854775808 - 9223372036854775807 Default: 0
window-height : the height of the main widget rendering the paintable
flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state
Unsigned Integer. Range: 0 - 4294967295 Default: 0
window-width : the width of the main widget rendering the paintable
flags: readable, writable, changeable in NULL, READY, PAUSED or PLAYING state
Unsigned Integer. Range: 0 - 4294967295 Default: 0`Preformatted text`