Download raw body.
[2/2] [new port] multimedia/obs-studio
On Sun, Jul 19, 2026 at 05:58:53AM +0000, yaydn@protonmail.com wrote:
> På fredag 17. juli 2026 kl. 20:04, skrev Daniil Ryvkin
> <mail@leinadr.com>:
>
> >
> > Added kf6-extra-cmake-modules to BUILD_DEPENDS. Removed MESSAGE,
> > moved sysctl info to pkg-readme with actual commands, description
> > of what happens if not set, and the FAQ URL.
> >
>
> Built/tested on current/amd64 with privsep.
>
> $ cd /usr/ports/x11/obs-studio/ && make clean=all clean && make build package test ; make port-lib-depends-check check-shlib-syms
>
> No regression tests for obs-studio-32.1.2
> /usr/local/lib/libobs-frontend-api.so.0.0 --> /usr/ports/pobj/obs-studio-32.1.2/fake-amd64/usr/local/lib/libobs-frontend-api.so.0.0
> No dynamic export changes
> /usr/local/lib/libobs-opengl.so.0.0 --> /usr/ports/pobj/obs-studio-32.1.2/fake-amd64/usr/local/lib/libobs-opengl.so.0.0
> No dynamic export changes
> /usr/local/lib/libobs-scripting.so.0.0 --> /usr/ports/pobj/obs-studio-32.1.2/fake-amd64/usr/local/lib/libobs-scripting.so.0.0
> No dynamic export changes
> /usr/local/lib/libobs.so.0.0 --> /usr/ports/pobj/obs-studio-32.1.2/fake-amd64/usr/local/lib/libobs.so.0.0
> No dynamic export changes
> --
>
> # TRUSTED_PKG_PATH=/usr/ports/packages/amd64/all/ pkg_add -Dsnap -Dinstalled -r obs-studio
> obs-studio-32.1.2->32.1.2: ok
> --
>
>
> Used it on sway, but like citra, dolphin-emu, pcsx2 and other qt6 ports
> that need gl acceleration, it will need a '--platform xcb' to run on
> wayland with xwayland and therefore gl acceleration. Some
> applications can do (very) slow software acceleration like dolphin-emu.
>
> I should ask @landry if their patch to stop explicitly disabling wayland
> in base sets is the same and/or if that gets gl acceleration working.
> https://marc.info/?l=openbsd-tech&m=176304756414309&w=2
>
> // This is what obs will default to; changed to English
> $ LC_ALL=en_CA.UTF-8 obs --platform wayland
>
> info: Platform: Wayland
> info: Physical Cores: 2, Logical Cores: 2
> info: Physical Memory: 16223MB Total
> info: Kernel Version: OpenBSD 8.0
> info: Qt Version: 6.11.1 (runtime), 6.11.1 (compiled)
> info: Portable mode: false
> info: OBS 32.1.2 (openbsd)
> info: ---------------------------------
> info: ---------------------------------
> info: audio settings reset:
> samples per sec: 48000
> speakers: 2
> max buffering: 960 milliseconds
> buffering type: dynamically increasing
> info: ---------------------------------
> info: Initializing OpenGL...
> info: Using EGL/Wayland
> error: eglGetDisplay failed
> error: device_create (GL) failed
> error: Failed to initialize video. Your GPU may not be supported, or your graphics drivers may need to be updated.
> warning: Failed to register with host portal QDBusError("org.freedesktop.portal.Error.Failed", "Could not register app ID: Connection already associated with an application ID")
> info: Freeing OBS context data
>
> (process:94594): GLib-CRITICAL **: 23:06:49.431: g_main_context_pop_thread_default: assertion 'stack != NULL' failed
>
> (process:94594): GLib-CRITICAL **: 23:06:49.432: g_main_context_pop_thread_default: assertion 'stack != NULL' failed
>
> (process:94594): GLib-CRITICAL **: 23:06:49.434: g_main_context_pop_thread_default: assertion 'stack != NULL' failed
>
> (process:94594): GLib-CRITICAL **: 23:06:49.435: g_main_context_pop_thread_default: assertion 'stack != NULL' failed
> info: == Profiler Results =============================
> info: run_program_init: 4512.76 ms
> info: ┣OBSApp::AppInit: 116.592 ms
> info: ┃ ┗OBSApp::InitLocale: 9.776 ms
> info: ┗OBSApp::OBSInit: 471.018 ms
> info: ┣obs_startup: 8.029 ms
> info: ┗OBSBasic::OBSInit: 11.126 ms
> info: ┣OBSBasic::InitBasicConfig: 7.174 ms
> info: ┣OBSBasic::ResetAudio: 0.58 ms
> info: ┗OBSBasic::ResetVideo: 2.844 ms
> info: ┗obs_init_graphics: 2.758 ms
> info: obs_hotkey_thread(25 ms): min=0 ms, median=0 ms, max=0.001 ms, 99th percentile=0.001 ms, 100% below 25 ms
> info: audio_thread(Audio): min=0.007 ms, median=0.013 ms, max=3.681 ms, 99th percentile=0.186 ms
> info: =================================================
> info: == Profiler Time Between Calls ==================
> info: obs_hotkey_thread(25 ms): min=38.946 ms, median=39.998 ms, max=41.116 ms, 0% within ±2% of 25 ms (0% lower, 100% higher)
> info: =================================================
> info: Number of memory leaks: 592
>
> (process:94594): GLib-CRITICAL **: 23:06:49.516: g_main_context_pop_thread_default: assertion 'stack != NULL' failed
> --
> // Gl breaks, it matters not if wayland is disabled at build time or not,
> // will still default to this on niri, plasma-wayland, wlroots based
> // wm/DE or other arcan/wayland environment
>
>
> // Runs it in xwayland or X11 baremetal if on xenocara
> $ LC_ALL=en_CA.UTF-8 obs --platform xcb
>
> info: Using EGL/X11
> info: Physical Cores: 2, Logical Cores: 2
> info: Physical Memory: 16223MB Total
> info: Kernel Version: OpenBSD 8.0
> info: Window System: X11.0, Vendor: The X.Org Foundation, Version: 1.24.1
> info: Qt Version: 6.11.1 (runtime), 6.11.1 (compiled)
> info: Portable mode: false
> info: OBS 32.1.2 (openbsd)
> info: ---------------------------------
> info: ---------------------------------
> info: audio settings reset:
> samples per sec: 48000
> speakers: 2
> max buffering: 960 milliseconds
> buffering type: dynamically increasing
> info: ---------------------------------
> info: Initializing OpenGL...
> info: Loading up OpenGL on adapter Intel Mesa Intel(R) HD Graphics 4000 (IVB GT2)
> info: OpenGL loaded successfully, version 4.2 (Core Profile) Mesa 25.0.7, shading language 4.20
> info: ---------------------------------
> info: video settings reset:
> base resolution: 1920x1080
> output resolution: 640x360
> downscale filter: Bicubic
> fps: 30/1
> format: NV12
> YUV mode: Rec. 709/Partial
> info: NV12 texture support enabled
> info: P010 texture support not available
> info: ---------------------------------
> info: [pipewire] No capture sources available
> warning: v4l2loopback not installed, virtual camera not registered
> info: VAAPI: API version 1.23
> info: FFmpeg VAAPI H264 encoding supported
> error: VAAPI: Failed to open device '/dev/dri/renderD129'
> error: VAAPI: Failed to open device '/dev/dri/renderD130'
> error: VAAPI: Failed to open device '/dev/dri/renderD131'
> info: FFmpeg VAAPI AV1 encoding not supported
> error: VAAPI: Failed to open device '/dev/dri/renderD129'
> error: VAAPI: Failed to open device '/dev/dri/renderD130'
> error: VAAPI: Failed to open device '/dev/dri/renderD131'
> info: FFmpeg VAAPI HEVC encoding not supported
> info: ---------------------------------
> info: Loaded Modules:
> info: text-freetype2.so
> info: sndio.so
> info: rtmp-services.so
> info: obs-x264.so
> info: obs-transitions.so
> info: obs-outputs.so
> info: obs-filters.so
> info: obs-ffmpeg.so
> info: linux-v4l2.so
> info: linux-pipewire.so
> info: linux-jack.so
> info: linux-capture.so
> info: image-source.so
> info: frontend-tools.so
> info: ---------------------------------
> info: ---------------------------------
> info: Available Encoders:
> info: Video Encoders:
> info: - ffmpeg_svt_av1 (SVT-AV1)
> info: - ffmpeg_aom_av1 (AOM AV1)
> info: - ffmpeg_vaapi_tex (FFmpeg VAAPI H.264)
> info: - obs_x264 (x264)
> info: Audio Encoders:
> info: - ffmpeg_aac (FFmpeg AAC)
> info: - ffmpeg_opus (FFmpeg Opus)
> info: - ffmpeg_pcm_s16le (FFmpeg PCM (16-bit))
> info: - ffmpeg_pcm_s24le (FFmpeg PCM (24-bit))
> info: - ffmpeg_pcm_f32le (FFmpeg PCM (32-bit float))
> info: - ffmpeg_alac (FFmpeg ALAC (24-bit))
> info: - ffmpeg_flac (FFmpeg FLAC (16-bit))
> info: ==== Startup complete ===============================================
> warning: Failed to register with host portal QDBusError("org.freedesktop.portal.Error.Failed", "Could not register app ID: Connection already associated with an application ID")
> info: All scene data cleared
> info: ------------------------------------------------
> error: obs-data.c: [obs_data_create_from_json] Failed reading json string (1): '[' or '{' expected near end of file
> info: sndio-input: sndio_apply: after initial sio_setpar(): appbufsz=19200 bps=2
> info: xshm-input: Geometry 1920x1080 @ 1366,0
> info: Switched to scene 'Scene'
> info: ------------------------------------------------
> info: Loaded scenes:
> info: - scene 'Scene':
> info: - source: 'Video Capture Device (PipeWire) (BETA)' (pipewire-camera-source)
> info: - source: 'Sndio input client' (sndio_output_capture)
> info: - source: 'Display Capture (XSHM)' (xshm_input_v2)
> info: ------------------------------------------------
> info: adding 298 milliseconds of audio buffering, total audio buffering is now 298 milliseconds (source: Sndio input client)
>
> info: [camera-portal] Successfully accessed cameras
> error: [camera-portal] Error retrieving PipeWire fd: GDBus.Error:org.freedesktop.portal.Error.Failed: Failed to open PipeWire remote: Couldn't connect to PipeWire
> info: ==== Shutting down ==================================================
> info: sndio-input: sndio_thread: exiting upon receiving EOF at IPC socket
> info: All scene data cleared
> info: ------------------------------------------------
> error: Tried to call obs_frontend_remove_event_callback with no callbacks!
> info: [Scripting] Total detached callbacks: 0
> info: Freeing OBS context data
>
> (process:27744): GLib-CRITICAL **: 02:03:41.452: g_main_context_pop_thread_default: assertion 'stack != NULL' failed
>
> (process:27744): GLib-CRITICAL **: 02:03:41.453: g_main_context_pop_thread_default: assertion 'stack != NULL' failed
>
> (process:27744): GLib-CRITICAL **: 02:03:41.454: g_main_context_pop_thread_default: assertion 'stack != NULL' failed
> info: == Profiler Results =============================
> info: run_program_init: 6345.07 ms
> info: ┣OBSApp::AppInit: 151.376 ms
> info: ┃ ┗OBSApp::InitLocale: 14.995 ms
> info: ┗OBSApp::OBSInit: 2718.9 ms
> info: ┣obs_startup: 3.921 ms
> info: ┗OBSBasic::OBSInit: 2384.91 ms
> info: ┣OBSBasic::InitBasicConfig: 106.668 ms
> info: ┣OBSBasic::ResetAudio: 0.623 ms
> info: ┣OBSBasic::ResetVideo: 199.991 ms
> info: ┃ ┗obs_init_graphics: 188.246 ms
> info: ┃ ┗shader compilation: 101.745 ms
> info: ┣OBSBasic::InitOBSCallbacks: 0.049 ms
> info: ┣OBSBasic::InitHotkeys: 0.109 ms
> info: ┣obs_load_all_modules2: 576.282 ms
> info: ┃ ┣obs_init_module(frontend-tools.so): 471.453 ms
> info: ┃ ┣obs_init_module(image-source.so): 0.025 ms
> info: ┃ ┣obs_init_module(linux-capture.so): 1.217 ms
> info: ┃ ┣obs_init_module(linux-jack.so): 0.003 ms
> info: ┃ ┣obs_init_module(linux-pipewire.so): 46.554 ms
> info: ┃ ┣obs_init_module(linux-v4l2.so): 0.245 ms
> info: ┃ ┣obs_init_module(obs-ffmpeg.so): 31.586 ms
> info: ┃ ┣obs_init_module(obs-filters.so): 0.051 ms
> info: ┃ ┣obs_init_module(obs-outputs.so): 0.008 ms
> info: ┃ ┣obs_init_module(obs-transitions.so): 0.011 ms
> info: ┃ ┣obs_init_module(obs-x264.so): 0.002 ms
> info: ┃ ┣obs_init_module(rtmp-services.so): 0.026 ms
> info: ┃ ┣obs_init_module(sndio.so): 0.003 ms
> info: ┃ ┗obs_init_module(text-freetype2.so): 0.07 ms
> info: ┣OBSBasic::InitService: 6.517 ms
> info: ┣OBSBasic::ResetOutputs: 0.942 ms
> info: ┣OBSBasic::CreateHotkeys: 0.129 ms
> info: ┣OBSBasic::InitPrimitives: 0.58 ms
> info: ┗OBSBasic::Load: 194.956 ms
> info: obs_hotkey_thread(25 ms): min=0.143 ms, median=0.461 ms, max=152.915 ms, 99th percentile=51.955 ms, 97.3214% below 25 ms
> info: audio_thread(Audio): min=0.008 ms, median=0.075 ms, max=298.85 ms, 99th percentile=3.034 ms
> info: obs_graphics_thread(33.3333 ms): min=0.018 ms, median=4.831 ms, max=323.412 ms, 99th percentile=66.275 ms, 97.1888% below 33.333 ms
> info: ┣tick_sources: min=0.001 ms, median=3.792 ms, max=226.103 ms, 99th percentile=65.94 ms
> info: ┣output_frame: min=0.009 ms, median=0.261 ms, max=97.283 ms, 99th percentile=16.707 ms
> info: ┃ ┗gs_context(video->graphics): min=0.009 ms, median=0.259 ms, max=96.841 ms, 99th percentile=16.602 ms
> info: ┃ ┣render_video: min=0.005 ms, median=0.109 ms, max=96.634 ms, 99th percentile=4.466 ms
> info: ┃ ┃ ┗render_main_texture: min=0.004 ms, median=0.106 ms, max=96.629 ms, 99th percentile=4.46 ms
> info: ┃ ┗gs_flush: min=0.001 ms, median=0.122 ms, max=50.679 ms, 99th percentile=1.996 ms
> info: ┗render_displays: min=0.002 ms, median=0.441 ms, max=11.289 ms, 99th percentile=6.648 ms
> info: =================================================
> info: == Profiler Time Between Calls ==================
> info: obs_hotkey_thread(25 ms): min=33.695 ms, median=40 ms, max=189.928 ms, 0% within ±2% of 25 ms (0% lower, 100% higher)
> info: obs_graphics_thread(33.3333 ms): min=5.233 ms, median=30.205 ms, max=323.425 ms, 1.20968% within ±2% of 33.333 ms (61.2903% lower, 37.5% higher)
> info: =================================================
> info: Number of memory leaks: 0
> --
>
>
> Since qt6 enables/needs wayland out of the box and the application will
> default to --platform wayland whether disabled at the program build time
> or not, I think keeping wayland on in config flags is better for
> continued testing.
>
> A lot of qt6+ stuff keep increasingly being dependent on wayland
> libraries, like lxqt, kde-gear, or other updated qt applications.
>
> And since kde-plasma 7.8.x will go full wayland with xwayland(only
> baremetal X11 support is removed), I think keeping this on in projects
> that have this enabled by default lessens maintenance. Less guessing
> which part of the stack has wayland or not, when upstream supports both
> baremetal xenocara/X11 and wayland or wayland only with
> xwayland{,-satellite} backwards compat. I argue that having part of the
> stack X11 only and others xenocara(X11)/wayland/arcan(currently broken)
> enabled makes it hard to diagnose problems that upstream doesn't really
> test for?
>
> The decision is for the ports and base devs to decide of course, just my
> input.
>
> Maybe rsadowski will do sonicDE or keep kde-plasma 6.7.6 with patches
> going forward instead?
>
> I will note my machine has incomplete vulkan support, so maybe others
> with more recent computers have this working? Though I think libva and
> {vulkan,spirv}* have wayland explicitly disabled too.
>
> Otherwise both devel/simde and this built fine. Obs-studio runs like
> noted above with '--xcb platform' in the light testing I did. I'm not
> well versed in this application though.
>
> The README reads well. I see no nits or grammer/spelling issues either.
>
> Not sure if this was too noisy of an email. Sorry if I added too much.
>
> TLDR: (Obs-studio and simde) It builds, looks fine. Thoughts on stack
> above.
>
> Hopes this helps. I know this is a popular application and many will be
> happy having this in tree. Thanks for the port and everyone's efforts.
>
Thanks for testing
Added a pkg-message noting that OBS must be started with --platform xcb
under a Wayland compositor, as Qt6 defaults to Wayland which currently
fails to initialize OpenGl on OpenBSD.
[2/2] [new port] multimedia/obs-studio