From 7738bcbc51e2472a160f96a9f1e82c15fb8e3e03 Mon Sep 17 00:00:00 2001 From: Vladimir Sumarov Date: Thu, 4 Jun 2026 10:16:39 -0700 Subject: [PATCH] libobs: mix scene-item audio when item canvas is unset scene_audio_render_do gated each scene item's audio on an exact canvas match, but a scene item whose canvas is NULL (the default until obs_sceneitem_set_canvas is called) matched no canvas, so its audio was dropped on every canvas while its video still rendered. Add the item->canvas != NULL escape hatch that the video path (scene_video_render) already has, so a NULL item canvas means "mix into every canvas". Ref: streamlabs/obs-studio-node#1493 Co-Authored-By: Claude Opus 4.8 (1M context) --- libobs/obs-scene.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libobs/obs-scene.c b/libobs/obs-scene.c index 0d01f89b0c3c11..5a5f371fc7781f 100644 --- a/libobs/obs-scene.c +++ b/libobs/obs-scene.c @@ -2111,9 +2111,12 @@ static bool scene_audio_render_do(void *data, uint64_t *ts_out, for (size_t canvas_idx = 0; canvas_idx < audio_output->outputs.num; canvas_idx++) { - if (item->canvas != - obs->video.canvases - .array[canvas_idx]) { + /* NULL canvas = all canvases, as in + * scene_video_render */ + if (item->canvas && + item->canvas != + obs->video.canvases + .array[canvas_idx]) { continue; }