Open nzoschke opened 9 months ago
On OS X the video syncs have different names: https://gstreamer.freedesktop.org/documentation/tutorials/basic/platform-specific-elements.html?gi-language=c#mac-os-x
But still getting segfaults.
./test.sh --audio master
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstAudioTestSrc:audiotestsrc0.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1, channel-mask=(bitmask)0x0000000000000003
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1, channel-mask=(bitmask)0x0000000000000003
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1, channel-mask=(bitmask)0x0000000000000003
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1, channel-mask=(bitmask)0x0000000000000003
0:00:00.065315000 62842 0x600003f2c5a0 DEBUG projectm gl.c:62:gl_init:<projectm0> GL API: 2
0:00:00.065323000 62842 0x600003f2c5a0 DEBUG projectm gl.c:63:gl_init:<projectm0> GL version: 4.1
0:00:00.065325000 62842 0x600003f2c5a0 DEBUG projectm gl.c:64:gl_init:<projectm0> GLSL version: 410
0:00:00.065327000 62842 0x600003f2c5a0 DEBUG projectm gl.c:65:gl_init:<projectm0> GLSL profile: 0
0:00:00.065329000 62842 0x600003f2c5a0 DEBUG projectm gl.c:75:gl_init:<projectm0> OpenGL context supports the requested version: 4.1
0:00:00.065331000 62842 0x600003f2c5a0 DEBUG projectm gl.c:86:gl_init:<projectm0> OpenGL context supports the combination of version with profile
0:00:00.065334000 62842 0x600003f2c5a0 WARN projectm gl.c:93:gl_init:<projectm0> OpenGL context does not support the 'precision' specifier in GLSL shaders
./test.sh: line 27: 62842 Segmentation fault: 11 GST_DEBUG=projectm:5 gst-launch-1.0 -v audiotestsrc ! queue ! audioconvert ! projectm ! "video/x-raw,width=512,height=512,framerate=60/1" ! videoconvert ! osxvideosink sync=false
setup.sh
seems good as examples from the docs work https://gstreamer.freedesktop.org/documentation/tutorials/basic/gstreamer-tools.html?gi-language=c
gst-launch-1.0 videotestsrc pattern=11 ! videoconvert ! autovideosink
gst-launch-1.0 playbin uri=https://gstreamer.freedesktop.org/data/media/sintel_trailer-480p.webm
gst-launch-1.0 audiotestsrc ! autoaudiosink
These are the most relevent things I can find in gstreamer logs and OS X Crash Report
0:00:00.358076000 65537 0x60000207e800 LOG GST_DEBUG gstinfo.c:2018:gst_debug_apply_entry: category gldebugmarker matches pattern 0x600000344720 - gets set to level 6
0:00:00.358083000 65537 0x60000207e800 INFO glcontext gstgldebug.c:339:_gst_gl_debug_enable:<glcontextcocoa0> No debugging support available
0:00:00.358105000 65537 0x600000d59560 DEBUG glcontext gstglcontext.c:774:gst_gl_context_activate:<glcontextcocoa0> activate:1
0:00:00.358109000 65537 0x600000d59560 INFO glcontext gstglcontext.c:1172:_unlock_create_thread:<glcontextcocoa0> gl thread running
0:00:00.358121000 65537 0x60000205c730 INFO glcontext gstglcontext.c:1079:gst_gl_context_create:<glcontextcocoa0> gl thread created
0:00:00.358128000 65537 0x60000205c730 LOG GST_DEBUG gstinfo.c:2018:gst_debug_apply_entry: category glsl matches pattern 0x600000344720 - gets set to level 6
0:00:00.358132000 65537 0x60000205c730 DEBUG projectm gl.c:62:gl_init:<projectm0> GL API: 2
0:00:00.358134000 65537 0x60000205c730 DEBUG projectm gl.c:63:gl_init:<projectm0> GL version: 4.1
0:00:00.358136000 65537 0x60000205c730 DEBUG projectm gl.c:64:gl_init:<projectm0> GLSL version: 410
0:00:00.358149000 65537 0x60000205c730 DEBUG projectm gl.c:65:gl_init:<projectm0> GLSL profile: 0
0:00:00.358153000 65537 0x60000205c730 DEBUG projectm gl.c:75:gl_init:<projectm0> OpenGL context supports the requested version: 4.1
0:00:00.358156000 65537 0x60000205c730 DEBUG projectm gl.c:86:gl_init:<projectm0> OpenGL context supports the combination of version with profile
0:00:00.358161000 65537 0x60000205c730 WARN projectm gl.c:93:gl_init:<projectm0> OpenGL context does not support the 'precision' specifier in GLSL shaders
./test.sh: line 27: 65537 Segmentation fault: 11 GST_DEBUG=*:6 gst-launch-1.0 -v audiotestsrc ! queue ! audioconvert ! projectm ! "video/x-raw,width=512,height=512,framerate=60/1" ! videoconvert ! osxvideosink sync=false
Thread 14 Crashed:: queue0:src
0 libGL.dylib 0x1fdda0388 glGetError + 8
1 libgstprojectm.dylib 0x103bb4260 gl_error_handler + 36
2 libgstprojectm.dylib 0x103bb4a64 gl_init + 1544
3 libgstprojectm.dylib 0x103bb5edc gst_projectm_setup + 120
I have made a couple changes that resolved a similar issue for me on Linux (Ubuntu). If you would like to give it a try, here is the PR: https://github.com/projectM-visualizer/gst-projectm/pull/2
I've improved the scripts to account for the different lib names and the different video syncs. Let me know if they work as expected for you!
If you could re-evaluation what on this list is still relevant and put it in the new issue. Thanks!
Testing OS X one more time here.
OS Versions:
sw_vers -productVersion
14.4.1
uname -a
Darwin studio Darwin Kernel Version 23.4.0: Fri Mar 15 00:10:42 PDT 2024; root:xnu-10063.101.17~1/RELEASE_ARM64_T6000 arm64
brew --version
Homebrew 4.2.21
Dependency versions:
./setup.sh
==> Updating Homebrew...
Warning: git 2.45.0 is already installed and up-to-date.
Warning: cmake 3.29.3 is already installed and up-to-date.
Warning: ninja 1.12.0 is already installed and up-to-date.
Warning: pkg-config 0.29.2_3 is already installed and up-to-date.
Warning: gstreamer 1.24.3 is already installed and up-to-date.
Build projectm:
git clone https://github.com/projectM-visualizer/projectm
cd projectm
git fetch && git reset --hard origin/master
git submodule update --init --recursive
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/homebrew ..
make
make install
-- Installing: /opt/homebrew/lib/libprojectM-4.4.1.0.dylib
-- Installing: /opt/homebrew/lib/libprojectM-4-playlist.4.1.0.dylib
...
Build gst-projectm
export PROJECTM_ROOT=/opt/homebrew
export GST_PLUGIN_PATH=$HOME/.local/share/gstreamer-1.0/plugins/
./build.sh
[6/6] : && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.4.sdk -dynamiclib -Wl,-headerpad_max_install_names -o libgstprojectm.dylib -install_name @rpath/libgstprojectm.dylib CMakeFiles/gstprojectm.dir/src/caps.c.o CMakeFiles/gstprojectm.dir/src/debug.c.o CMakeFiles/gstprojectm.dir/src/plugin.c.o CMakeFiles/gstprojectm.dir/src/projectm.c.o CMakeFiles/gstprojectm.dir/src/gstglbaseaudiovisualizer.c.o -Wl,-rpath,/opt/homebrew/lib /opt/homebrew/lib/libprojectM-4.4.1.0.dylib /opt/homebrew/Cellar/gstreamer/1.24.3/lib/libgstreamer-1.0.dylib /opt/homebrew/Cellar/gstreamer/1.24.3/lib/libgstreamer-1.0.dylib /opt/homebrew/Cellar/gstreamer/1.24.3/lib/libgstbase-1.0.dylib /opt/homebrew/Cellar/gstreamer/1.24.3/lib/libgstaudio-1.0.dylib /opt/homebrew/Cellar/gstreamer/1.24.3/lib/libgstvideo-1.0.dylib /opt/homebrew/Cellar/gstreamer/1.24.3/lib/libgstgl-1.0.dylib /opt/homebrew/Cellar/gstreamer/1.24.3/lib/libgstpbutils-1.0.dylib /opt/homebrew/Cellar/glib/2.80.0_2/lib/libglib-2.0.dylib /opt/homebrew/Cellar/glib/2.80.0_2/lib/libgobject-2.0.dylib -framework OpenGL -framework CoreFoundation && :
Install to gstreamer plugins? (Y/n): y
Done! Here's an example command:
gst-launch-1.0 audiotestsrc ! queue ! audioconvert ! projectm ! video/x-raw,width=512,height=512,framerate=60/1 ! videoconvert ! osxvideosink sync=false
gst-launch-1.0 audiotestsrc ! queue ! audioconvert ! projectm ! video/x-raw,width=512,height=512,framerate=60/1 ! videoconvert ! osxvideosink sync=false
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'projectm0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayCocoa\)\ gldisplaycocoa0";
** (gst-launch-1.0:29313): ERROR **: 08:22:41.492: OpenGL Error: GL_INVALID_ENUM - Enumeration parameter is not legal
zsh: trace trap gst-launch-1.0 audiotestsrc ! queue ! audioconvert ! projectm ! ! !
gltestsrc
is working
https://gstreamer.freedesktop.org/documentation/opengl/gltestsrc.html?gi-language=c
gst-launch-1.0 -v gltestsrc pattern=smpte ! glimagesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayCocoa\)\ gldisplaycocoa0";
/GstPipeline:pipeline0/GstGLTestSrc:gltestsrc0.GstPad:src: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLUploadElement:gluploadelement0.GstPad:src: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorConvertElement:glcolorconvertelement0.GstPad:src: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorBalance:glcolorbalance0.GstPad:src: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink.GstPad:sink: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorBalance:glcolorbalance0.GstPad:sink: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorConvertElement:glcolorconvertelement0.GstPad:sink: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLUploadElement:gluploadelement0.GstPad:sink: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0.GstGhostPad:sink: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, texture-target=(string)2D
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstSystemClock
I see all your examples are running the test with audio. Did you try any of the others. Does details or inspect give you a result about the projectm lib?
What's making this challenging for Hack and me is that there isn't any helpful information in what you've posted that would assist us in tracking down the issue, because the error given is so generic.
I dont have a mac device to play around on so all I can do is provide suggestions until I do.
Test scripts
./test.sh --details
Plugin Details:
Name projectm
Description plugin to visualize audio using the ProjectM library
Filename /Users/noah/.local/share/gstreamer-1.0/plugins/libgstprojectm.dylib
Version 0.0.1
License LGPL
Source module GstProjectM
Binary package GstProjectM
Origin URL https://github.com/projectM-visualizer/gst-projectm
projectm: ProjectM Visualizer
1 features:
+-- 1 elements
./test.sh --inspect
Factory Details:
Rank none (0)
Long-name ProjectM Visualizer
Klass Generic
Description A plugin for visualizing music using ProjectM
Author AnomieVision <anomievision@gmail.com> | Tristan Charpentier <tristan_charpentier@hotmail.com>
Plugin Details:
Name projectm
Description plugin to visualize audio using the ProjectM library
Filename /Users/noah/.local/share/gstreamer-1.0/plugins/libgstprojectm.dylib
Version 0.0.1
License LGPL
Source module GstProjectM
Binary package GstProjectM
Origin URL https://github.com/projectM-visualizer/gst-projectm
GObject
+----GInitiallyUnowned
+----GstObject
+----GstElement
+----GstAudioVisualizer
+----GstGLBaseAudioVisualizer
+----GstProjectM
Pad Templates:
SINK template: 'sink'
Availability: Always
Capabilities:
audio/x-raw
format: S16LE
layout: interleaved
channels: [ 1, 2147483647 ]
rate: [ 1, 2147483647 ]
channel-mask: { (bitmask)0x0000000000000003 }
SRC template: 'src'
Availability: Always
Capabilities:
video/x-raw
format: { (string)ABGR }
framerate: [ 0/1, 2147483647/1 ]
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
Element has no clocking capabilities.
Element has no URI handling capabilities.
Pads:
SINK: 'sink'
Pad Template: 'sink'
SRC: 'src'
Pad Template: 'src'
Element Properties:
aspect-correction : Enables or disables aspect ratio correction. When enabled, the visualizer adjusts for aspect ratio differences in rendering.
flags: readable, writable
Boolean. Default: true
beat-sensitivity : Controls the sensitivity to audio beats. Higher values make the visualizer respond more strongly to beats.
flags: readable, writable
Float. Range: 0 - 5 Default: 1
easter-egg : DControls the activation of an Easter Egg feature. The value determines the likelihood of triggering the Easter Egg.
flags: readable, writable
Float. Range: 0 - 1 Default: 0
hard-cut-duration : Sets the duration, in seconds, for hard cuts. Hard cuts are abrupt transitions in the visualizer.
flags: readable, writable
Double. Range: 0 - 999999 Default: 3
hard-cut-enabled : Enables or disables hard cuts. When enabled, the visualizer may exhibit sudden transitions based on the audio input.
flags: readable, writable
Boolean. Default: false
hard-cut-sensitivity: Adjusts the sensitivity of the visualizer to hard cuts. Higher values increase the responsiveness to abrupt changes in audio.
flags: readable, writable
Float. Range: 0 - 1 Default: 1
mesh-size : Sets the size of the mesh used in rendering. The format is 'width,height'.
flags: readable, writable
String. Default: "48,32"
name : The name of the object
flags: readable, writable
String. Default: "projectm0"
parent : The parent of the object
flags: readable, writable
Object of type "GstObject"
preset : Specifies the path to the preset file. The preset file determines the visual style and behavior of the audio visualizer.
flags: readable, writable
String. Default: null
preset-duration : Sets the duration, in seconds, for each preset. A zero value causes the preset to play indefinitely.
flags: readable, writable
Double. Range: 0 - 999999 Default: 0
preset-locked : Locks or unlocks the current preset. When locked, the visualizer remains on the current preset without automatic changes.
flags: readable, writable
Boolean. Default: true
shade-amount : Shading color to use (big-endian ARGB)
flags: readable, writable, controllable
Unsigned Integer. Range: 0 - 4294967295 Default: 657930
shader : Shader function to apply on each frame
flags: readable, writable, controllable
Enum "GstAudioVisualizerShader" Default: 1, "fade"
(0): none - GST_AUDIO_VISUALIZER_SHADER_NONE
(1): fade - GST_AUDIO_VISUALIZER_SHADER_FADE
(2): fade-and-move-up - GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_UP
(3): fade-and-move-down - GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_DOWN
(4): fade-and-move-left - GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_LEFT
(5): fade-and-move-right - GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_RIGHT
(6): fade-and-move-horiz-out - GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_OUT
(7): fade-and-move-horiz-in - GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_IN
(8): fade-and-move-vert-out - GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_OUT
(9): fade-and-move-vert-in - GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_IN
soft-cut-duration : Sets the duration, in seconds, for soft cuts. Soft cuts are smoother transitions between visualizer states.
flags: readable, writable
Double. Range: 0 - 999999 Default: 3
texture-dir : Sets the path to the directory containing textures used in the visualizer.
flags: readable, writable
String. Default: null
This one already has GST_DEBUG=4
./test.sh --preset
0:00:00.000061916 32506 0x6000015899f0 INFO GST_INIT gst.c:574:init_pre: Initializing GStreamer Core Library version 1.24.3
0:00:00.000075875 32506 0x6000015899f0 INFO GST_INIT gst.c:575:init_pre: Using library installed in /opt/homebrew/Cellar/gstreamer/1.24.3/lib
0:00:00.000088833 32506 0x6000015899f0 INFO GST_INIT gst.c:595:init_pre: Darwin studio.attlocal.net 23.4.0 Darwin Kernel Version 23.4.0: Fri Mar 15 00:10:42 PDT 2024; root:xnu-10063.101.17~1/RELEASE_ARM64_T6000 arm64
0:00:00.000183041 32506 0x6000015899f0 INFO GST_INIT gstmessage.c:129:_priv_gst_message_initialize: init messages
0:00:00.000324500 32506 0x6000015899f0 INFO GST_INIT gstcontext.c:86:_priv_gst_context_initialize: init contexts
0:00:00.000504416 32506 0x6000015899f0 INFO GST_PLUGIN_LOADING gstplugin.c:328:_priv_gst_plugin_initialize: registering 0 static plugins
0:00:00.000548375 32506 0x6000015899f0 INFO GST_PLUGIN_LOADING gstplugin.c:236:gst_plugin_register_static: registered static plugin "staticelements"
0:00:00.000556125 32506 0x6000015899f0 INFO GST_PLUGIN_LOADING gstplugin.c:238:gst_plugin_register_static: added static plugin "staticelements", result: 1
0:00:00.000687250 32506 0x6000015899f0 INFO GST_REGISTRY gstregistry.c:1918:ensure_current_registry: reading registry cache: /Users/noah/.cache/gstreamer-1.0/registry.aarch64.bin
0:00:00.004637208 32506 0x6000015899f0 INFO GST_REGISTRY gstregistrybinary.c:683:priv_gst_registry_binary_read_cache: loaded /Users/noah/.cache/gstreamer-1.0/registry.aarch64.bin in 0.003932 seconds
0:00:00.004648833 32506 0x6000015899f0 INFO GST_REGISTRY gstregistry.c:1785:scan_and_update_registry: Validating plugins from registry cache: /Users/noah/.cache/gstreamer-1.0/registry.aarch64.bin
0:00:00.005635500 32506 0x6000015899f0 INFO GST_REGISTRY gstregistry.c:1877:scan_and_update_registry: Registry cache has not changed
0:00:00.005640583 32506 0x6000015899f0 INFO GST_REGISTRY gstregistry.c:1953:ensure_current_registry: registry reading and updating done
0:00:00.005643833 32506 0x6000015899f0 INFO GST_INIT gst.c:808:init_post: GLib runtime version: 2.80.0
0:00:00.005646291 32506 0x6000015899f0 INFO GST_INIT gst.c:810:init_post: GLib headers version: 2.80.0
0:00:00.005648083 32506 0x6000015899f0 INFO GST_INIT gst.c:811:init_post: initialized GStreamer successfully
0:00:00.005661458 32506 0x6000015899f0 INFO GST_PIPELINE gstparse.c:345:gst_parse_launch_full: parsing pipeline description 'audiotestsrc ! queue ! audioconvert ! projectm preset=test/presets/250-wavecode.milk.milk ! video/x-raw,width=512,height=512,framerate=60/1 ! videoconvert ! osxvideosink sync=false '
0:00:00.007299416 32506 0x6000015899f0 INFO GST_PLUGIN_LOADING gstplugin.c:995:_priv_gst_plugin_load_file_for_registry: plugin "/opt/homebrew/Cellar/gstreamer/1.24.3/lib/gstreamer-1.0/libgstaudiotestsrc.dylib" loaded
0:00:00.007345333 32506 0x6000015899f0 INFO GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "audiotestsrc"
0:00:00.007355333 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstelement.c:759:gst_element_add_pad:<GstBaseSrc@0x15c05d2e0> adding pad 'src'
0:00:00.008121083 32506 0x6000015899f0 INFO GST_PLUGIN_LOADING gstplugin.c:995:_priv_gst_plugin_load_file_for_registry: plugin "/opt/homebrew/Cellar/gstreamer/1.24.3/lib/gstreamer-1.0/libgstcoreelements.dylib" loaded
0:00:00.008146125 32506 0x6000015899f0 INFO GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "queue"
0:00:00.008153958 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstelement.c:759:gst_element_add_pad:<GstQueue@0x15a905220> adding pad 'sink'
0:00:00.008158583 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstelement.c:759:gst_element_add_pad:<GstQueue@0x15a905220> adding pad 'src'
0:00:00.008684625 32506 0x6000015899f0 INFO GST_PLUGIN_LOADING gstplugin.c:995:_priv_gst_plugin_load_file_for_registry: plugin "/opt/homebrew/Cellar/gstreamer/1.24.3/lib/gstreamer-1.0/libgstaudioconvert.dylib" loaded
0:00:00.008713666 32506 0x6000015899f0 INFO GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "audioconvert"
0:00:00.008718833 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstelement.c:759:gst_element_add_pad:<GstBaseTransform@0x15c0090d0> adding pad 'sink'
0:00:00.008723041 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstelement.c:759:gst_element_add_pad:<GstBaseTransform@0x15c0090d0> adding pad 'src'
0:00:00.012186333 32506 0x6000015899f0 INFO GST_PLUGIN_LOADING gstplugin.c:995:_priv_gst_plugin_load_file_for_registry: plugin "/Users/noah/.local/share/gstreamer-1.0/plugins/libgstprojectm.dylib" loaded
0:00:00.012245375 32506 0x6000015899f0 INFO GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "projectm"
0:00:00.012253000 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstelement.c:759:gst_element_add_pad:<GstAudioVisualizer@0x15a057c30> adding pad 'sink'
0:00:00.012256875 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstelement.c:759:gst_element_add_pad:<GstAudioVisualizer@0x15a057c30> adding pad 'src'
0:00:00.012926458 32506 0x6000015899f0 INFO GST_PLUGIN_LOADING gstplugin.c:995:_priv_gst_plugin_load_file_for_registry: plugin "/opt/homebrew/Cellar/gstreamer/1.24.3/lib/gstreamer-1.0/libgstvideoconvertscale.dylib" loaded
0:00:00.013014000 32506 0x6000015899f0 INFO GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "videoconvert"
0:00:00.013019416 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstelement.c:759:gst_element_add_pad:<GstBaseTransform@0x15a05cd50> adding pad 'sink'
0:00:00.013026583 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstelement.c:759:gst_element_add_pad:<GstBaseTransform@0x15a05cd50> adding pad 'src'
0:00:00.013634875 32506 0x6000015899f0 INFO GST_PLUGIN_LOADING gstplugin.c:995:_priv_gst_plugin_load_file_for_registry: plugin "/opt/homebrew/Cellar/gstreamer/1.24.3/lib/gstreamer-1.0/libgstosxvideo.dylib" loaded
0:00:00.013664625 32506 0x6000015899f0 INFO GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "osxvideosink"
0:00:00.013669541 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstelement.c:759:gst_element_add_pad:<GstBaseSink@0x15a05d530> adding pad 'sink'
0:00:00.013690791 32506 0x6000015899f0 INFO GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "pipeline"
0:00:00.013726625 32506 0x6000015899f0 INFO GST_PIPELINE subprojects/gstreamer/gst/parse/grammar.y:1062:gst_parse_perform_link: linking some pad of GstAudioTestSrc named audiotestsrc0 to some pad of GstQueue named queue0 (0/0) with caps "(NULL)"
0:00:00.013730666 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstutils.c:1821:gst_element_link_pads_full: trying to link element audiotestsrc0:(any) to element queue0:(any)
0:00:00.013734000 32506 0x6000015899f0 INFO GST_PADS gstutils.c:1081:gst_pad_check_link: trying to link audiotestsrc0:src and queue0:sink
0:00:00.013742166 32506 0x6000015899f0 INFO GST_PADS gstpad.c:4398:gst_pad_peer_query:<queue0:src> pad has no peer
0:00:00.013746541 32506 0x6000015899f0 INFO GST_PADS gstutils.c:1635:prepare_link_maybe_ghosting: audiotestsrc0 and queue0 in same bin, no need for ghost pads
0:00:00.013768291 32506 0x6000015899f0 INFO GST_PADS gstpad.c:2441:gst_pad_link_prepare: trying to link audiotestsrc0:src and queue0:sink
0:00:00.013772166 32506 0x6000015899f0 INFO GST_PADS gstpad.c:4398:gst_pad_peer_query:<queue0:src> pad has no peer
0:00:00.013775708 32506 0x6000015899f0 INFO GST_PADS gstpad.c:2622:gst_pad_link_full: linked audiotestsrc0:src and queue0:sink, successful
0:00:00.013777875 32506 0x6000015899f0 INFO GST_EVENT gstevent.c:1687:gst_event_new_reconfigure: creating reconfigure event
0:00:00.013781666 32506 0x6000015899f0 INFO GST_EVENT gstpad.c:6018:gst_pad_send_event_unchecked:<audiotestsrc0:src> Received event on flushing pad. Discarding
0:00:00.013788750 32506 0x6000015899f0 INFO GST_PIPELINE subprojects/gstreamer/gst/parse/grammar.y:1062:gst_parse_perform_link: linking some pad of GstQueue named queue0 to some pad of GstAudioConvert named audioconvert0 (0/0) with caps "(NULL)"
0:00:00.013839000 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstutils.c:1821:gst_element_link_pads_full: trying to link element queue0:(any) to element audioconvert0:(any)
0:00:00.013842666 32506 0x6000015899f0 INFO GST_PADS gstutils.c:1081:gst_pad_check_link: trying to link queue0:src and audioconvert0:sink
0:00:00.013849375 32506 0x6000015899f0 INFO GST_PADS gstpad.c:4398:gst_pad_peer_query:<audioconvert0:src> pad has no peer
0:00:00.013862500 32506 0x6000015899f0 INFO structure gststructure.c:2957:gst_structure_get_valist: Expected field 'channel-mask' in structure: audio/x-raw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ];
0:00:00.013874833 32506 0x6000015899f0 INFO GST_PADS gstutils.c:1635:prepare_link_maybe_ghosting: queue0 and audioconvert0 in same bin, no need for ghost pads
0:00:00.013878166 32506 0x6000015899f0 INFO GST_PADS gstpad.c:2441:gst_pad_link_prepare: trying to link queue0:src and audioconvert0:sink
0:00:00.013880958 32506 0x6000015899f0 INFO GST_PADS gstpad.c:4398:gst_pad_peer_query:<audioconvert0:src> pad has no peer
0:00:00.013919833 32506 0x6000015899f0 INFO structure gststructure.c:2957:gst_structure_get_valist: Expected field 'channel-mask' in structure: audio/x-raw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ];
0:00:00.013930041 32506 0x6000015899f0 INFO GST_PADS gstpad.c:2622:gst_pad_link_full: linked queue0:src and audioconvert0:sink, successful
0:00:00.013931708 32506 0x6000015899f0 INFO GST_EVENT gstevent.c:1687:gst_event_new_reconfigure: creating reconfigure event
0:00:00.013933541 32506 0x6000015899f0 INFO GST_EVENT gstpad.c:6018:gst_pad_send_event_unchecked:<queue0:src> Received event on flushing pad. Discarding
0:00:00.013938500 32506 0x6000015899f0 INFO GST_PIPELINE subprojects/gstreamer/gst/parse/grammar.y:1062:gst_parse_perform_link: linking some pad of GstAudioConvert named audioconvert0 to some pad of GstProjectM named projectm0 (0/0) with caps "(NULL)"
0:00:00.013941125 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstutils.c:1821:gst_element_link_pads_full: trying to link element audioconvert0:(any) to element projectm0:(any)
0:00:00.013986458 32506 0x6000015899f0 INFO GST_PADS gstutils.c:1081:gst_pad_check_link: trying to link audioconvert0:src and projectm0:sink
0:00:00.014002666 32506 0x6000015899f0 INFO structure gststructure.c:2957:gst_structure_get_valist: Expected field 'channel-mask' in structure: audio/x-raw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ];
0:00:00.014016875 32506 0x6000015899f0 INFO GST_PADS gstutils.c:1635:prepare_link_maybe_ghosting: audioconvert0 and projectm0 in same bin, no need for ghost pads
0:00:00.014020041 32506 0x6000015899f0 INFO GST_PADS gstpad.c:2441:gst_pad_link_prepare: trying to link audioconvert0:src and projectm0:sink
0:00:00.014030833 32506 0x6000015899f0 INFO structure gststructure.c:2957:gst_structure_get_valist: Expected field 'channel-mask' in structure: audio/x-raw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ];
0:00:00.014044625 32506 0x6000015899f0 INFO GST_PADS gstpad.c:2622:gst_pad_link_full: linked audioconvert0:src and projectm0:sink, successful
0:00:00.014046333 32506 0x6000015899f0 INFO GST_EVENT gstevent.c:1687:gst_event_new_reconfigure: creating reconfigure event
0:00:00.014048166 32506 0x6000015899f0 INFO GST_EVENT gstpad.c:6018:gst_pad_send_event_unchecked:<audioconvert0:src> Received event on flushing pad. Discarding
0:00:00.014057500 32506 0x6000015899f0 INFO GST_PIPELINE subprojects/gstreamer/gst/parse/grammar.y:1062:gst_parse_perform_link: linking some pad of GstProjectM named projectm0 to some pad of GstVideoConvert named videoconvert0 (0/0) with caps "video/x-raw, width=(int)512, height=(int)512, framerate=(fraction)60/1"
0:00:00.014060666 32506 0x6000015899f0 INFO GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "capsfilter"
0:00:00.014085041 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstelement.c:759:gst_element_add_pad:<GstBaseTransform@0x159742320> adding pad 'sink'
0:00:00.014088500 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstelement.c:759:gst_element_add_pad:<GstBaseTransform@0x159742320> adding pad 'src'
0:00:00.014094541 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2070:gst_bin_get_state_func:<pipeline0> getting state
0:00:00.014099416 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<capsfilter0> completed state change to NULL
0:00:00.014102166 32506 0x6000015899f0 INFO GST_EVENT gstevent.c:1687:gst_event_new_reconfigure: creating reconfigure event
0:00:00.014105750 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstutils.c:1821:gst_element_link_pads_full: trying to link element projectm0:(any) to element capsfilter0:sink
0:00:00.014150291 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstelement.c:1017:gst_element_get_static_pad: found pad capsfilter0:sink
0:00:00.014153041 32506 0x6000015899f0 INFO GST_PADS gstutils.c:1635:prepare_link_maybe_ghosting: projectm0 and capsfilter0 in same bin, no need for ghost pads
0:00:00.014156708 32506 0x6000015899f0 INFO GST_PADS gstpad.c:2441:gst_pad_link_prepare: trying to link projectm0:src and capsfilter0:sink
0:00:00.014160291 32506 0x6000015899f0 INFO GST_PADS gstpad.c:4398:gst_pad_peer_query:<capsfilter0:src> pad has no peer
0:00:00.014164291 32506 0x6000015899f0 INFO GST_PADS gstpad.c:2622:gst_pad_link_full: linked projectm0:src and capsfilter0:sink, successful
0:00:00.014165916 32506 0x6000015899f0 INFO GST_EVENT gstevent.c:1687:gst_event_new_reconfigure: creating reconfigure event
0:00:00.014167625 32506 0x6000015899f0 INFO GST_EVENT gstpad.c:6018:gst_pad_send_event_unchecked:<projectm0:src> Received event on flushing pad. Discarding
0:00:00.014170916 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstutils.c:1821:gst_element_link_pads_full: trying to link element capsfilter0:src to element videoconvert0:(any)
0:00:00.014231000 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstelement.c:1017:gst_element_get_static_pad: found pad capsfilter0:src
0:00:00.014237291 32506 0x6000015899f0 INFO GST_PADS gstutils.c:1081:gst_pad_check_link: trying to link capsfilter0:src and videoconvert0:sink
0:00:00.014244500 32506 0x6000015899f0 INFO GST_PADS gstpad.c:4398:gst_pad_peer_query:<videoconvert0:src> pad has no peer
0:00:00.014515625 32506 0x6000015899f0 INFO GST_PADS gstutils.c:1635:prepare_link_maybe_ghosting: capsfilter0 and videoconvert0 in same bin, no need for ghost pads
0:00:00.014521333 32506 0x6000015899f0 INFO GST_PADS gstpad.c:2441:gst_pad_link_prepare: trying to link capsfilter0:src and videoconvert0:sink
0:00:00.014525000 32506 0x6000015899f0 INFO GST_PADS gstpad.c:4398:gst_pad_peer_query:<videoconvert0:src> pad has no peer
0:00:00.014788500 32506 0x6000015899f0 INFO GST_PADS gstpad.c:2622:gst_pad_link_full: linked capsfilter0:src and videoconvert0:sink, successful
0:00:00.014791500 32506 0x6000015899f0 INFO GST_EVENT gstevent.c:1687:gst_event_new_reconfigure: creating reconfigure event
0:00:00.014793541 32506 0x6000015899f0 INFO GST_EVENT gstpad.c:6018:gst_pad_send_event_unchecked:<capsfilter0:src> Received event on flushing pad. Discarding
0:00:00.014799666 32506 0x6000015899f0 INFO GST_PIPELINE subprojects/gstreamer/gst/parse/grammar.y:1062:gst_parse_perform_link: linking some pad of GstVideoConvert named videoconvert0 to some pad of GstOSXVideoSink named osxvideosink0 (0/0) with caps "(NULL)"
0:00:00.014802750 32506 0x6000015899f0 INFO GST_ELEMENT_PADS gstutils.c:1821:gst_element_link_pads_full: trying to link element videoconvert0:(any) to element osxvideosink0:(any)
0:00:00.014805666 32506 0x6000015899f0 INFO GST_PADS gstutils.c:1081:gst_pad_check_link: trying to link videoconvert0:src and osxvideosink0:sink
0:00:00.014835625 32506 0x6000015899f0 INFO GST_PADS gstutils.c:1635:prepare_link_maybe_ghosting: videoconvert0 and osxvideosink0 in same bin, no need for ghost pads
0:00:00.014839416 32506 0x6000015899f0 INFO GST_PADS gstpad.c:2441:gst_pad_link_prepare: trying to link videoconvert0:src and osxvideosink0:sink
0:00:00.014864583 32506 0x6000015899f0 INFO GST_PADS gstpad.c:2622:gst_pad_link_full: linked videoconvert0:src and osxvideosink0:sink, successful
0:00:00.014866416 32506 0x6000015899f0 INFO GST_EVENT gstevent.c:1687:gst_event_new_reconfigure: creating reconfigure event
0:00:00.014868291 32506 0x6000015899f0 INFO GST_EVENT gstpad.c:6018:gst_pad_send_event_unchecked:<videoconvert0:src> Received event on flushing pad. Discarding
Setting pipeline to PAUSED ...
0:00:00.014914583 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2484:gst_bin_element_set_state:<osxvideosink0> current NULL pending VOID_PENDING, desired next READY
0:00:00.014917833 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<osxvideosink0> completed state change to READY
0:00:00.014920375 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2728:_priv_gst_element_state_changed:<osxvideosink0> notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:00.014928833 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2942:gst_bin_change_state_func:<pipeline0> child 'osxvideosink0' changed state to 2(READY) successfully
0:00:00.014931916 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2484:gst_bin_element_set_state:<videoconvert0> current NULL pending VOID_PENDING, desired next READY
0:00:00.014933833 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<videoconvert0> completed state change to READY
0:00:00.014949458 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2728:_priv_gst_element_state_changed:<videoconvert0> notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:00.014956875 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2942:gst_bin_change_state_func:<pipeline0> child 'videoconvert0' changed state to 2(READY) successfully
0:00:00.014961333 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2484:gst_bin_element_set_state:<capsfilter0> current NULL pending VOID_PENDING, desired next READY
0:00:00.014963958 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<capsfilter0> completed state change to READY
0:00:00.014966333 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2728:_priv_gst_element_state_changed:<capsfilter0> notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:00.014969166 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2942:gst_bin_change_state_func:<pipeline0> child 'capsfilter0' changed state to 2(READY) successfully
0:00:00.015029625 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2484:gst_bin_element_set_state:<projectm0> current NULL pending VOID_PENDING, desired next READY
0:00:00.015033500 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<projectm0> completed state change to READY
0:00:00.015035916 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2728:_priv_gst_element_state_changed:<projectm0> notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:00.015039625 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2942:gst_bin_change_state_func:<pipeline0> child 'projectm0' changed state to 2(READY) successfully
0:00:00.015042458 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2484:gst_bin_element_set_state:<audioconvert0> current NULL pending VOID_PENDING, desired next READY
0:00:00.015044541 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<audioconvert0> completed state change to READY
0:00:00.015046791 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2728:_priv_gst_element_state_changed:<audioconvert0> notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:00.015049416 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2942:gst_bin_change_state_func:<pipeline0> child 'audioconvert0' changed state to 2(READY) successfully
0:00:00.015051958 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2484:gst_bin_element_set_state:<queue0> current NULL pending VOID_PENDING, desired next READY
0:00:00.015053875 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<queue0> completed state change to READY
0:00:00.015126333 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2728:_priv_gst_element_state_changed:<queue0> notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:00.015130375 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2942:gst_bin_change_state_func:<pipeline0> child 'queue0' changed state to 2(READY) successfully
0:00:00.015133000 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2484:gst_bin_element_set_state:<audiotestsrc0> current NULL pending VOID_PENDING, desired next READY
0:00:00.015135458 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<audiotestsrc0> completed state change to READY
0:00:00.015137583 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2728:_priv_gst_element_state_changed:<audiotestsrc0> notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:00.015140083 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2942:gst_bin_change_state_func:<pipeline0> child 'audiotestsrc0' changed state to 2(READY) successfully
0:00:00.015143750 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2800:gst_element_continue_state:<pipeline0> committing state from NULL to READY, pending PAUSED, next PAUSED
0:00:00.015200500 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2728:_priv_gst_element_state_changed:<pipeline0> notifying about state-changed NULL to READY (PAUSED pending)
0:00:00.015218833 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2807:gst_element_continue_state:<pipeline0> continue state change READY to PAUSED, final PAUSED
0:00:00.015224000 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2484:gst_bin_element_set_state:<osxvideosink0> current READY pending VOID_PENDING, desired next PAUSED
0:00:00.026191708 32506 0x6000015899f0 INFO osxvideosink osxvideosink.m:131:gst_osx_video_sink_osxwindow_create:<osxvideosink0> emitting prepare-xwindow-id
0:00:00.042228916 32506 0x6000015899f0 INFO osxvideosink osxvideosink.m:148:gst_osx_video_sink_osxwindow_create:<osxvideosink0> No superview, creating an internal window.
0:00:00.055377875 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2948:gst_bin_change_state_func:<pipeline0> child 'osxvideosink0' is changing state asynchronously to PAUSED
0:00:00.055388666 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2484:gst_bin_element_set_state:<videoconvert0> current READY pending VOID_PENDING, desired next PAUSED
0:00:00.055393375 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<videoconvert0> completed state change to PAUSED
0:00:00.055396333 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2728:_priv_gst_element_state_changed:<videoconvert0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:00.055402291 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2942:gst_bin_change_state_func:<pipeline0> child 'videoconvert0' changed state to 3(PAUSED) successfully
0:00:00.055406208 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2484:gst_bin_element_set_state:<capsfilter0> current READY pending VOID_PENDING, desired next PAUSED
0:00:00.055409000 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<capsfilter0> completed state change to PAUSED
0:00:00.055411291 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2728:_priv_gst_element_state_changed:<capsfilter0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:00.055413958 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2942:gst_bin_change_state_func:<pipeline0> child 'capsfilter0' changed state to 3(PAUSED) successfully
0:00:00.055448166 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2484:gst_bin_element_set_state:<projectm0> current READY pending VOID_PENDING, desired next PAUSED
0:00:00.055462125 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<projectm0> completed state change to PAUSED
0:00:00.055494250 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2728:_priv_gst_element_state_changed:<projectm0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:00.055499458 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2942:gst_bin_change_state_func:<pipeline0> child 'projectm0' changed state to 3(PAUSED) successfully
0:00:00.055503458 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2484:gst_bin_element_set_state:<audioconvert0> current READY pending VOID_PENDING, desired next PAUSED
0:00:00.055506833 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<audioconvert0> completed state change to PAUSED
0:00:00.055509166 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2728:_priv_gst_element_state_changed:<audioconvert0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:00.055646375 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2942:gst_bin_change_state_func:<pipeline0> child 'audioconvert0' changed state to 3(PAUSED) successfully
0:00:00.055651583 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2484:gst_bin_element_set_state:<queue0> current READY pending VOID_PENDING, desired next PAUSED
0:00:00.055690000 32506 0x6000015899f0 INFO task gsttask.c:531:gst_task_set_lock: setting stream lock 0x15a964120 on task 0x15aa0da50
0:00:00.055694125 32506 0x6000015899f0 INFO GST_PADS gstpad.c:6363:gst_pad_start_task:<queue0:src> created task 0x15aa0da50
0:00:00.055742791 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<queue0> completed state change to PAUSED
0:00:00.055761791 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2728:_priv_gst_element_state_changed:<queue0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:00.055767958 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2942:gst_bin_change_state_func:<pipeline0> child 'queue0' changed state to 3(PAUSED) successfully
0:00:00.055771500 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2484:gst_bin_element_set_state:<audiotestsrc0> current READY pending VOID_PENDING, desired next PAUSED
0:00:00.055780375 32506 0x6000015899f0 INFO basesrc gstbasesrc.c:1454:gst_base_src_do_seek:<audiotestsrc0> seeking: time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration 99:99:99.999999999
0:00:00.055829791 32506 0x6000015899f0 INFO task gsttask.c:531:gst_task_set_lock: setting stream lock 0x15a963870 on task 0x15ad04380
0:00:00.055835208 32506 0x6000015899f0 INFO GST_PADS gstpad.c:6363:gst_pad_start_task:<audiotestsrc0:src> created task 0x15ad04380
0:00:00.055875041 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<audiotestsrc0> completed state change to PAUSED
0:00:00.055882041 32506 0x6000015899f0 INFO GST_STATES gstelement.c:2728:_priv_gst_element_state_changed:<audiotestsrc0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:00.055887500 32506 0x6000015899f0 INFO GST_STATES gstbin.c:2942:gst_bin_change_state_func:<pipeline0> child 'audiotestsrc0' changed state to 3(PAUSED) successfully
0:00:00.055896666 32506 0x6000015899f0 INFO pipeline gstpipeline.c:540:gst_pipeline_change_state:<pipeline0> pipeline is not live
Pipeline is PREROLLING ...
0:00:00.055910875 32506 0x600001598640 INFO GST_ELEMENT_PADS gstelement.c:1014:gst_element_get_static_pad: no such pad 'sink' in element "audiotestsrc0"
0:00:00.055917333 32506 0x600001598640 FIXME default gstutils.c:4089:gst_element_decorate_stream_id_internal:<audiotestsrc0> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.056032750 32506 0x600001598640 INFO structure gststructure.c:2957:gst_structure_get_valist: Expected field 'channel-mask' in structure: audio/x-raw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ];
0:00:00.056053333 32506 0x600001598640 INFO structure gststructure.c:2966:gst_structure_get_valist: Expected field 'channel-mask' in structure to be of type 'GstBitmask', but field was of type 'GstValueList': audio/x-raw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], channel-mask=(bitmask){ 0x0000000000000003 };
0:00:00.056088333 32506 0x600001598640 WARN audio-channels audio-channels.c:415:gst_audio_channel_positions_from_mask: Only partially valid channel mask 0x0000000000000003 for 1 channels
0:00:00.056096500 32506 0x600001598640 INFO GST_EVENT gstevent.c:918:gst_event_new_caps: creating caps event audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1, channel-mask=(bitmask)0x0000000000000003
/GstPipeline:pipeline0/GstAudioTestSrc:audiotestsrc0.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1, channel-mask=(bitmask)0x0000000000000003
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1, channel-mask=(bitmask)0x0000000000000003
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1, channel-mask=(bitmask)0x0000000000000003
0:00:00.056163541 32506 0x600001581ea0 INFO basetransform gstbasetransform.c:1326:gst_base_transform_setcaps:<audioconvert0> reuse caps
0:00:00.056169625 32506 0x600001581ea0 WARN audio-channels audio-channels.c:415:gst_audio_channel_positions_from_mask: Only partially valid channel mask 0x0000000000000003 for 1 channels
0:00:00.056172750 32506 0x600001581ea0 WARN audio-channels audio-channels.c:415:gst_audio_channel_positions_from_mask: Only partially valid channel mask 0x0000000000000003 for 1 channels
0:00:00.056179416 32506 0x600001581ea0 INFO audio-converter audio-converter.c:1361:gst_audio_converter_new: unitsizes: 2 -> 2
0:00:00.056182000 32506 0x600001581ea0 INFO audio-converter audio-converter.c:730:chain_unpack: unpack format S16LE to S16LE
0:00:00.056192291 32506 0x600001581ea0 INFO audio-converter audio-converter.c:872:chain_mix: mix format S16LE, passthrough 1, in_channels 1, out_channels 1
0:00:00.056195041 32506 0x600001581ea0 INFO audio-converter audio-converter.c:966:chain_quantize: depth in 16, out 16
0:00:00.056196791 32506 0x600001581ea0 INFO audio-converter audio-converter.c:978:chain_quantize: using no dither and noise shaping
0:00:00.056198875 32506 0x600001581ea0 INFO audio-converter audio-converter.c:1036:chain_pack: pack format S16LE to S16LE
0:00:00.056200750 32506 0x600001581ea0 INFO audio-converter audio-converter.c:1390:gst_audio_converter_new: same formats, same layout, no resampler and passthrough mixing -> passthrough
0:00:00.056256666 32506 0x600001581ea0 INFO GST_EVENT gstevent.c:918:gst_event_new_caps: creating caps event audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1, channel-mask=(bitmask)0x0000000000000003
0:00:00.056277541 32506 0x600001581ea0 WARN audio-channels audio-channels.c:415:gst_audio_channel_positions_from_mask: Only partially valid channel mask 0x0000000000000003 for 1 channels
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1, channel-mask=(bitmask)0x0000000000000003
0:00:00.056434250 32506 0x600001581ea0 INFO GST_EVENT gstevent.c:918:gst_event_new_caps: creating caps event video/x-raw, width=(int)512, height=(int)512, framerate=(fraction)60/1, format=(string)ABGR
/GstPipeline:pipeline0/GstProjectM:projectm0.GstPad:src: caps = video/x-raw, width=(int)512, height=(int)512, framerate=(fraction)60/1, format=(string)ABGR
0:00:00.056561125 32506 0x600001581ea0 INFO basetransform gstbasetransform.c:1326:gst_base_transform_setcaps:<capsfilter0> reuse caps
0:00:00.056565375 32506 0x600001581ea0 INFO GST_EVENT gstevent.c:918:gst_event_new_caps: creating caps event video/x-raw, width=(int)512, height=(int)512, framerate=(fraction)60/1, format=(string)ABGR
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, width=(int)512, height=(int)512, framerate=(fraction)60/1, format=(string)ABGR
0:00:00.056759000 32506 0x600001581ea0 INFO GST_EVENT gstevent.c:918:gst_event_new_caps: creating caps event video/x-raw, width=(int)512, height=(int)512, framerate=(fraction)60/1, format=(string)UYVY
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)512, height=(int)512, framerate=(fraction)60/1, format=(string)UYVY
0:00:00.059485916 32506 0x6000038823d0 INFO osxvideosink osxvideosink.m:708:-[GstOSXVideoSinkObject resize]:<osxvideosink0> resizing
0:00:00.061946916 32506 0x6000038823d0 INFO osxvideosink osxvideosink.m:716:-[GstOSXVideoSinkObject resize]:<osxvideosink0> done
/GstPipeline:pipeline0/GstOSXVideoSink:osxvideosink0.GstPad:sink: caps = video/x-raw, width=(int)512, height=(int)512, framerate=(fraction)60/1, format=(string)UYVY
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, width=(int)512, height=(int)512, framerate=(fraction)60/1, format=(string)ABGR
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, width=(int)512, height=(int)512, framerate=(fraction)60/1, format=(string)ABGR
0:00:00.062087125 32506 0x600001581ea0 INFO GST_CONTEXT gstglutils.c:115:pad_query:<projectm0:src> pad peer query failed
0:00:00.062093000 32506 0x600001581ea0 INFO GST_CONTEXT gstglutils.c:115:pad_query:<projectm0:sink> pad peer query failed
0:00:00.062094958 32506 0x600001581ea0 INFO GST_CONTEXT gstglutils.c:177:_gst_context_query:<projectm0> posting need context message
0:00:00.062103208 32506 0x600001581ea0 INFO GST_CONTEXT gstglutils.c:115:pad_query:<projectm0:src> pad peer query failed
0:00:00.062105541 32506 0x600001581ea0 INFO GST_CONTEXT gstglutils.c:115:pad_query:<projectm0:sink> pad peer query failed
0:00:00.062107375 32506 0x600001581ea0 INFO GST_CONTEXT gstglutils.c:177:_gst_context_query:<projectm0> posting need context message
0:00:00.062192375 32506 0x600001581ea0 INFO GST_CONTEXT gstglutils.c:241:gst_gl_element_propagate_display_context:<projectm0> posting have context (0x600001294d20) message with display (0x600000d9c380)
0:00:00.062201625 32506 0x600001581ea0 INFO GST_CONTEXT gstglutils.c:115:pad_query:<projectm0:src> pad peer query failed
0:00:00.062203958 32506 0x600001581ea0 INFO GST_CONTEXT gstglutils.c:115:pad_query:<projectm0:sink> pad peer query failed
0:00:00.062205708 32506 0x600001581ea0 INFO GST_CONTEXT gstglutils.c:177:_gst_context_query:<projectm0> posting need context message
0:00:00.062209208 32506 0x600001581ea0 INFO GST_CONTEXT gstglutils.c:115:pad_query:<projectm0:src> pad peer query failed
0:00:00.062219208 32506 0x600001581ea0 INFO glcontext gstglcontext.c:34Got context from element 'projectm0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayCocoa\)\ gldisplaycocoa0";
9:gst_gl_context_new: creating a context for display <gldisplaycocoa0>, user choice:(null)
0:00:00.062272958 32506 0x600001581ea0 INFO glwindow gstglwindow.c:295:gst_gl_window_new: creating a window, user choice:(null)
0:00:00.062303041 32506 0x600001598e10 INFO glcontext gstglcontext.c:1322:gst_gl_context_create_thread:<glcontextcocoa0> Attempting to create opengl context. user chosen api(s) (any), compiled api support (opengl opengl3) display api (opengl3 gles2)
0:00:00.066721458 32506 0x600001598e10 INFO glcontext_cocoa gstglcontext_cocoa.m:327:gst_gl_context_cocoa_create_context:<glcontextcocoa0> GL context created: 0x15b01da00
0:00:00.066737291 32506 0x600001598e10 INFO glcontext gstglcontext.c:1333:gst_gl_context_create_thread:<glcontextcocoa0> created context
0:00:00.066740833 32506 0x600001598e10 INFO glcontext gstglcontext.c:1349:gst_gl_context_create_thread:<glcontextcocoa0> available GL APIs: opengl3
0:00:00.067277208 32506 0x600001598e10 INFO glcontext gstglcontext.c:1113:_create_context_info:<glcontextcocoa0> GL_VERSION: 4.1 Metal - 88
0:00:00.067283041 32506 0x600001598e10 INFO glcontext gstglcontext.c:1116:_create_context_info:<glcontextcocoa0> GL_SHADING_LANGUAGE_VERSION: 4.10
0:00:00.067289583 32506 0x600001598e10 INFO glcontext gstglcontext.c:1118:_create_context_info:<glcontextcocoa0> GL_VENDOR: Apple
0:00:00.067291416 32506 0x600001598e10 INFO glcontext gstglcontext.c:1120:_create_context_info:<glcontextcocoa0> GL_RENDERER: Apple M1 Pro
0:00:00.071000416 32506 0x600001598e10 INFO glcontext gstgldebug.c:339:_gst_gl_debug_enable:<glcontextcocoa0> No debugging support available
0:00:00.071022833 32506 0x600003883d80 INFO glcontext gstglcontext.c:1172:_unlock_create_thread:<glcontextcocoa0> gl thread running
0:00:00.071033583 32506 0x600001581ea0 INFO glcontext gstglcontext.c:1079:gst_gl_context_create:<glcontextcocoa0> gl thread created
0:00:00.071041250 32506 0x600001581ea0 INFO glbaseaudiovisualizer gstglbaseaudiovisualizer.c:430:gst_gl_base_audio_visualizer_find_gl_context_unlocked:<projectm0> found OpenGL context <glcontextcocoa0>
0:00:00.071069375 32506 0x600003883d80 INFO glbaseaudiovisualizer gstglbaseaudiovisualizer.c:234:gst_gl_base_audio_visualizer_gl_start:<projectm0> starting
0:00:00.075897250 32506 0x6000038823d0 INFO glcaopengllayer gstglcaopengllayer.m:167:-[GstGLCAOpenGLLayer copyCGLContextForPixelFormat:]: attempting to create CGLContext for CAOpenGLLayer with share context 0x15b01da00
0:00:00.076307041 32506 0x6000038823d0 INFO glcontext gstglcontext.c:1113:_create_context_info:<glwrappedcontext0> GL_VERSION: 4.1 Metal - 88
0:00:00.076311208 32506 0x6000038823d0 INFO glcontext gstglcontext.c:1116:_create_context_info:<glwrappedcontext0> GL_SHADING_LANGUAGE_VERSION: 4.10
0:00:00.076313166 32506 0x6000038823d0 INFO glcontext gstglcontext.c:1118:_create_context_info:<glwrappedcontext0> GL_VENDOR: Apple
0:00:00.076315000 32506 0x6000038823d0 INFO glcontext gstglcontext.c:1120:_create_context_info:<glwrappedcontext0> GL_RENDERER: Apple M1 Pro
0:00:00.100753833 32506 0x600003883d80 INFO projectm projectm.c:63:projectm_init:<projectm0> Using Properties: preset=test/presets/250-wavecode.milk.milk, texture-dir=(null), beat-sensitivity=1.000000, hard-cut-duration=3.000000, hard-cut-enabled=0, hard-cut-sensitivity=1.000000, soft-cut-duration=3.000000, preset-duration=0.000000, mesh-size=(48, 32)aspect-correction=1, easter-egg=0.000000, preset-locked=1,
** (gst-launch-1.0:32506): ERROR **: 09:32:15.724: OpenGL Error: GL_INVALID_ENUM - Enumeration parameter is not legal
./test.sh: line 42: 32506 Trace/BPT trap: 5 GST_DEBUG=4 gst-launch-1.0 -v audiotestsrc ! queue ! audioconvert ! projectm preset="test/presets/250-wavecode.milk.milk" ! "video/x-raw,width=512,height=512,framerate=60/1" ! videoconvert ! $VIDEO_SINK sync=false
Okay I'll review this and see if i can track it down
Were there any other videosinks available to you on osx, aside from osxvideosink?
% gst-inspect-1.0 | grep sink master
app: appsink: AppSink
applemedia: avsamplebufferlayersink: AV Sample video sink
autodetect: autoaudiosink: Auto audio sink
autodetect: autovideosink: Auto video sink
aws: awss3hlssink: S3 HLS Sink
aws: awss3putobjectsink: Amazon S3 PutObject sink
aws: awss3sink: Amazon S3 sink
aws: rusotos3sink: Amazon S3 sink
coreelements: fakesink: Fake Sink
coreelements: fdsink: Filedescriptor Sink
coreelements: filesink: File Sink
curl: curlfilesink: Curl file sink
curl: curlftpsink: Curl ftp sink
curl: curlhttpsink: Curl http sink
curl: curlsmtpsink: Curl smtp sink
dash: dashsink: DASH Sink
debug: testsink: Test plugin
debugutilsbad: checksumsink: Checksum sink
debugutilsbad: fakeaudiosink: Fake Audio Sink
debugutilsbad: fakevideosink: Fake Video Sink
debugutilsbad: fpsdisplaysink: Measure and show framerate on videosink
debugutilsbad: videocodectestsink: Video CODEC Test Sink
decklink: decklinkaudiosink: Decklink Audio Sink
decklink: decklinkvideosink: Decklink Video Sink
gdkpixbuf: gdkpixbufsink: GdkPixbuf sink
gio: giosink: GIO sink
gio: giostreamsink: GIO stream sink
gtk: gtksink: Gtk Video Sink
gtk4: gtk4paintablesink: GTK 4 Paintable Sink
hls: hlssink: HTTP Live Streaming sink
hls: hlssink2: HTTP Live Streaming sink
hlssink3: hlscmafsink: HTTP Live Streaming CMAF Sink
hlssink3: hlssink3: HTTP Live Streaming sink
inter: interaudiosink: Internal audio sink
inter: intersubsink: Internal subtitle sink
inter: intervideosink: Internal video sink
ipcpipeline: ipcpipelinesink: Inter-process Pipeline Sink
multifile: multifilesink: Multi-File Sink
multifile: splitmuxsink: Split Muxing Bin
ndi: ndisink: NewTek NDI Sink
ndi: ndisinkcombiner: NewTek NDI Sink Combiner
opengl: caopengllayersink: CAOpenGLLayer video sink
opengl: glimagesink: GL Sink Bin
opengl: glimagesinkelement: OpenGL video sink
opengl: glsinkbin: GL Sink Bin
oss4: oss4sink: OSS v4 Audio Sink
osxaudio: osxaudiosink: Audio Sink (macOS)
osxvideo: osxvideosink: macOS Video sink
playback: playsink: Player Sink
proxy: proxysink: Proxy Sink
rist: ristsink: RIST Sink
rsfile: rsfilesink: File Sink
rsinter: intersink: Inter Sink
rswebrtc: awskvswebrtcsink: AwsKvsWebRTCSink
rswebrtc: janusvrwebrtcsink: JanusVRWebRTCSink
rswebrtc: livekitwebrtcsink: LiveKitWebRTCSink
rswebrtc: webrtcsink: WebRTCSink
rswebrtc: whipclientsink: WhipWebRTCSink
rtmp: rtmpsink: RTMP output sink
rtmp2: rtmp2sink: RTMP sink element
rtpmanagerbad: rtpsink: RTP Sink element
rtspclientsink: rtspclientsink: RTSP RECORD client
shm: shmsink: Shared Memory Sink
shout2: shout2send: Icecast network sink
soup: souphttpclientsink: HTTP client sink
srt: srtclientsink: SRT sink
srt: srtserversink: SRT sink
srt: srtsink: SRT sink
tcp: multifdsink: Multi filedescriptor sink
tcp: multisocketsink: Multi socket sink
tcp: tcpclientsink: TCP client sink
tcp: tcpserversink: TCP server sink
threadshare: ts-proxysink: Thread-sharing proxy sink
threadshare: ts-udpsink: Thread-sharing UDP sink
udp: dynudpsink: UDP packet sender
udp: multiudpsink: UDP packet sender
udp: udpsink: UDP packet sender
unixfd: unixfdsink: Unix file descriptor sink
webrtchttp: whipsink: WHIP Sink Bin
ximagesink: ximagesink: Video sink
Try all of these and lmk if any work:
My goal here is to narrow down my search field.
If any errors look new please share!
I'm thinking we should take out the video pipeline stuff, does this look right?
VIDEO_SINK="autovideosink"
GST_DEBUG=4 gst-launch-1.0 -v \
audiotestsrc ! queue ! audioconvert ! \
projectm preset="test/presets/250-wavecode.milk.milk" \
! $VIDEO_SINK sync=false
** (gst-launch-1.0:33346): ERROR **: 10:05:09.464: OpenGL Error: GL_INVALID_ENUM - Enumeration parameter is not legal
VIDEO_SINK="caopengllayersink"
GST_DEBUG=4 gst-launch-1.0 -v \
audiotestsrc ! queue ! audioconvert ! \
projectm preset="test/presets/250-wavecode.milk.milk" \
! $VIDEO_SINK sync=false
WARNING: erroneous pipeline: could not link projectm0 to caopengllayersink0
VIDEO_SINK="glimagesink"
GST_DEBUG=4 gst-launch-1.0 -v \
audiotestsrc ! queue ! audioconvert ! \
projectm preset="test/presets/250-wavecode.milk.milk" \
! $VIDEO_SINK sync=false
** (gst-launch-1.0:33370): ERROR **: 10:05:50.329: OpenGL Error: GL_INVALID_ENUM - Enumeration parameter is not legal
VIDEO_SINK="glimagesinkelement"
GST_DEBUG=4 gst-launch-1.0 -v \
audiotestsrc ! queue ! audioconvert ! \
projectm preset="test/presets/250-wavecode.milk.milk" \
! $VIDEO_SINK sync=false
WARNING: erroneous pipeline: could not link projectm0 to glimagesink0
VIDEO_SINK="glsinkbin"
GST_DEBUG=4 gst-launch-1.0 -v \
audiotestsrc ! queue ! audioconvert ! \
projectm preset="test/presets/250-wavecode.milk.milk" \
! $VIDEO_SINK sync=false
0:00:00.016633083 33419 0x600000df54f0 INFO GST_STATES gstbin.c:2608:gst_bin_element_set_state:<audiotestsrc0> skipping transition from NULL to NULL
0:00:00.016635166 33419 0x600000df54f0 INFO GST_STATES gstbin.c:2942:gst_bin_change_state_func:<pipeline0> child 'audiotestsrc0' changed state to 1(NULL) successfully
0:00:00.016637333 33419 0x600000df54f0 INFO GST_STATES gstelement.c:2825:gst_element_continue_state:<pipeline0> completed state change to NULL
Freeing pipeline ...
0:00:00.016646041 33419 0x600000df54f0 INFO GST_ELEMENT_PADS gstpad.c:2147:gst_pad_unlink: unlinking projectm0:src(0x12000f9a0) and glsinkbin0:sink(0x120015e50)
The last one didn't error but it didn't display anything either.
Thanks for testing those!
How would you remove it? Its what displays the gl context?
VIDEO_SINK="autovideosink"
GST_DEBUG=4 gst-launch-1.0 -v \
audiotestsrc ! queue ! audioconvert ! \
projectm preset="test/presets/250-wavecode.milk.milk" \
! "video/x-raw,width=512,height=512,framerate=60/1" ! videoconvert ! $VIDEO_SINK sync=false
** (gst-launch-1.0:33546): ERROR **: 10:15:36.846: OpenGL Error: GL_INVALID_ENUM - Enumeration parameter is not legal
zsh: trace trap GST_DEBUG=4 gst-launch-1.0 -v audiotestsrc ! queue ! audioconvert ! projectm
VIDEO_SINK="caopengllayersink"
GST_DEBUG=4 gst-launch-1.0 -v \
audiotestsrc ! queue ! audioconvert ! \
projectm preset="test/presets/250-wavecode.milk.milk" \
! "video/x-raw,width=512,height=512,framerate=60/1" ! videoconvert ! $VIDEO_SINK sync=false
0:00:00.016151875 33565 0x6000038d14f0 ERROR GST_PIPELINE subprojects/gstreamer/gst/parse/grammar.y:1150:gst_parse_perform_link: could not link videoconvert0 to caopengllayersink0
WARNING: erroneous pipeline: could not link videoconvert0 to caopengllayersink0
VIDEO_SINK="glimagesink"
GST_DEBUG=4 gst-launch-1.0 -v \
audiotestsrc ! queue ! audioconvert ! \
projectm preset="test/presets/250-wavecode.milk.milk" \
! "video/x-raw,width=512,height=512,framerate=60/1" ! videoconvert ! $VIDEO_SINK sync=false
** (gst-launch-1.0:33585): ERROR **: 10:16:37.152: OpenGL Error: GL_INVALID_ENUM - Enumeration parameter is not legal
zsh: trace trap GST_DEBUG=4 gst-launch-1.0 -v audiotestsrc ! queue ! audioconvert ! projectm
VIDEO_SINK="glimagesinkelement"
GST_DEBUG=4 gst-launch-1.0 -v \
audiotestsrc ! queue ! audioconvert ! \
projectm preset="test/presets/250-wavecode.milk.milk" \
! "video/x-raw,width=512,height=512,framerate=60/1" ! videoconvert ! $VIDEO_SINK sync=false
0:00:00.016014500 33605 0x6000016d82d0 ERROR GST_PIPELINE subprojects/gstreamer/gst/parse/grammar.y:1150:gst_parse_perform_link: could not link videoconvert0 to glimagesink0
WARNING: erroneous pipeline: could not link videoconvert0 to glimagesink0
VIDEO_SINK="glsinkbin"
GST_DEBUG=4 gst-launch-1.0 -v \
audiotestsrc ! queue ! audioconvert ! \
projectm preset="test/presets/250-wavecode.milk.milk" \
! "video/x-raw,width=512,height=512,framerate=60/1" ! videoconvert ! $VIDEO_SINK sync=false
0:00:00.018605125 33625 0x600001564af0 INFO GST_REFCOUNTING gstelement.c:3484:gst_element_finalize:<pipeline0> 0x159110c30 finalize parent
0:00:00.018610584 33625 0x600001564af0 INFO GST_INIT gst.c:1094:gst_deinit: deinitializing GStreamer
0:00:00.019257959 33625 0x600001564af0 INFO GST_INIT gst.c:1238:gst_deinit: deinitialized GStreamer
Oh my apologies, I misunderstood what you were talking about. I see now, the difference in commands.
I'll keep poking at it when I can but I'm not seeing a hint on where the issue is.
Without having my own osx device to dev on, I cant really do much else.
Looks like the GL error GL_INVALID_ENUM
is already present right after projectm_create()
is called.
Debugging the hat plug-in, I can also see that the GL error pops up somewhere during projectM initialization. We don't check for error in most places (which is something we probably should do), so that can happen anywhere. Shaders and the basic textures as well as the vertex buffers look good though, as they all have proper IDs.
One way of checking would be placing glGetError() calls in strategic places in libprojectM and look where the error is set, then work back in the call hierarchy to find the call that is problematic. Might as well be a bug in projectM we missed.
I added a number of glGetError() calls and I think the problem is possibly located in MilkdropNoise::GetPreferredInternalFormat
GLint preferredInternalFormat{GL_BGRA};
glGetInternalformativ(GL_TEXTURE_2D, GL_RGBA8, GL_TEXTURE_IMAGE_FORMAT, sizeof(preferredInternalFormat), &preferredInternalFormat);
According to https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInternalformat.xhtml it's only available from GL 4.2 on, and MacOS seems to have 4.1.
That's kinda weird, as I'd expect that the function isn't defined at all, and would rather cause a nullptr dereference when caled like this.
Since I'm not really sure this internal format selection really does anything to improve performance and the order of the noise channels isn't relevant at all, I'd just remove that code and use GL_BGRA
with GL Core and GL_RGBA
with GLES, as these are the "good defaults" for each API variant. If it's not the preferred format, the GL driver will take care of rearranging the data accordingly, which isn't a big deal is these textures are just created once per projectM instance.
I've removed the offending function in PR https://github.com/projectM-visualizer/projectm/pull/806 as it's bad to use GL 4.2 functions in a library that claims to only need GL 3.3.
After that fix (which was an unfortunate problem, but not the actual issue), it seems that the internal framebuffer creation in projectM fails, and the first frame rendered then fails with a GL_FRAMEBUFFER_UNDEFINED
error.
That's a tough one, because the internal framebuffer classes look like everything is fine, e.g. each framebuffer has a unique positive ID assigned, which OpenGL returns on creation.
Searching a bit and speculating, it seems like there's some issue in the macOS OpenGL implementation that makes the framebuffer creation succeed, but the returned ID is still invalid and doesn't point to an existing framebuffer. From this StackOverflow post, this seems to happen if the framebuffer is created when no drawable surface is assigned to the context, e.g. no native window it can render to. The other possibility is that the OpenGL context creation function used by GStreamer might be NSOpenGLView
, which is known to no longer work properly in macOS releases since around 10.9 (we're at 14.4 now).
So it might be worth a try to make sure that projectM is created only after the output window is present, as GStreamer probably creates the osxvideosink AKA the window after initializing projectM in the filter chain. That said, creating the projectM instance on the first actual draw call might work better. I won't have the time to test this before my vacation, but at least you have a starting point.
I have made the change @kblaschke suggested to move the projectM initialization into the render method on a branch in my fork init-projectm-on-render in case somebody with a mac has time to check it out.
I have made the change @kblaschke suggested to move the projectM initialization into the render method on a branch in my fork init-projectm-on-render in case somebody with a mac has time to check it out.
I tried init-projectm-on-render
but got the same framebuffer issue
Process 56668 launched: '/opt/homebrew/bin/gst-launch-1.0' (arm64)
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'projectm0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayCocoa\)\ gldisplaycocoa0";
** (gst-launch-1.0:56668): ERROR **: 20:12:46.383: OpenGL Error: GL_INVALID_FRAMEBUFFER_OPERATION - Incomplete framebuffer operation
Process 56668 stopped
* thread #13, queue = 'org.freedesktop.gstreamer.glwindow', stop reason = EXC_BREAKPOINT (code=1, subcode=0x1007742f4)
frame #0: 0x00000001007742f4 libglib-2.0.0.dylib`_g_log_abort + 40
libglib-2.0.0.dylib`:
-> 0x1007742f4 <+40>: brk #0x1
libglib-2.0.0.dylib`g_log_structured:
0x1007742f8 <+0>: stp x28, x27, [sp, #-0x60]!
0x1007742fc <+4>: stp x26, x25, [sp, #0x10]
0x100774300 <+8>: stp x24, x23, [sp, #0x20]
Target 0: (gst-launch-1.0) stopped.
(lldb) bt
* thread #13, queue = 'org.freedesktop.gstreamer.glwindow', stop reason = EXC_BREAKPOINT (code=1, subcode=0x1007742f4)
* frame #0: 0x00000001007742f4 libglib-2.0.0.dylib`_g_log_abort + 40
frame #1: 0x0000000100774688 libglib-2.0.0.dylib`g_log_structured_array + 264
frame #2: 0x0000000100774140 libglib-2.0.0.dylib`g_log_default_handler + 204
frame #3: 0x0000000100773d2c libglib-2.0.0.dylib`g_logv + 828
frame #4: 0x0000000100773980 libglib-2.0.0.dylib`g_log + 28
frame #5: 0x0000000100892aa0 libgstprojectm.dylib`gl_error_handler(context=0x000000014e606570, data=0x000000014d02ca30) at debug.c:38:9
frame #6: 0x0000000100893d44 libgstprojectm.dylib`gst_projectm_render(glav=0x000000014d02ca30, audio=0x000000014c60e4f0, video=0x00000001706ba6b0) at plugin.c:316:3
frame #7: 0x00000001008965f0 libgstprojectm.dylib`gst_gl_base_audio_visualizer_gl_thread_render_callback(params=0x00000001706ba5f8) at gstglbaseaudiovisualizer.c:297:38
frame #8: 0x000000010448a668 libgstgl-1.0.0.dylib`_run_message_sync(message=0x00000001706ba570) at gstglwindow.c:638:5 [opt]
frame #9: 0x000000010448ee88 libgstgl-1.0.0.dylib`__gst_gl_window_cocoa_send_message_async_block_invoke(.block_descriptor=0x0000600000dbeda0) at gstglwindow_cocoa.m:514:7 [opt]
frame #10: 0x0000000182320750 libdispatch.dylib`_dispatch_call_block_and_release + 32
frame #11: 0x00000001823223e8 libdispatch.dylib`_dispatch_client_callout + 20
frame #12: 0x0000000182329a14 libdispatch.dylib`_dispatch_lane_serial_drain + 748
frame #13: 0x000000018232a544 libdispatch.dylib`_dispatch_lane_invoke + 380
frame #14: 0x00000001823352d0 libdispatch.dylib`_dispatch_root_queue_drain_deferred_wlh + 288
frame #15: 0x0000000182334b44 libdispatch.dylib`_dispatch_workloop_worker_thread + 404
frame #16: 0x00000001824cf00c libsystem_pthread.dylib`_pthread_wqthread + 288
We could check whether GStreamer uses NSOpenGLView
or the more modern API, and if this might be the issue. I'm currently on vacation and can't check up on this until mid-June, but if there isn't any progress then, I'll tune back in and see what I can find out.
The plugin is not working for me on OS X yet.
brew
osxvideosink
devicegst-launch-1.0
commands workRunning the test command after build.sh gives this error here: