From 447e318f7ad1b41afa4e674d01731022f4b81b3f Mon Sep 17 00:00:00 2001 From: agonchar Date: Fri, 20 Feb 2026 10:11:47 +1000 Subject: [PATCH] Fix audio only mode --- src/nimio-transport.js | 4 ++-- src/nimio.js | 4 ++-- src/playback/context.js | 4 +++- src/sldp/manager.js | 1 + 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/nimio-transport.js b/src/nimio-transport.js index 73c6a9f..4a84bc7 100644 --- a/src/nimio-transport.js +++ b/src/nimio-transport.js @@ -61,8 +61,8 @@ export const NimioTransport = { _onAudioSetupReceived(data) { if (!data || !data.config) { - this._startNoAudioMode(); - return; + // TODO: show UI error notification if noVideo + return this._noVideo ? this.stop(true) : this._startNoAudioMode(); } if (this._isNextRenditionTrack(data.trackId)) { diff --git a/src/nimio.js b/src/nimio.js index 6bc6383..c6a7212 100644 --- a/src/nimio.js +++ b/src/nimio.js @@ -458,11 +458,11 @@ export default class Nimio { } _onDecodingError(kind) { - // TODO: show error message in UI if (kind === "video") this._setNoVideo(); if (kind === "audio") this._setNoAudio(); if (this._noVideo && this._noAudio) { + // TODO: show error message in UI this.stop(true); } } @@ -583,7 +583,7 @@ export default class Nimio { if (!this._state.isShared()) { this._state.attachPort(this._audioNode.port); } - if (!procOptions.audioSab) { + if (!procOptions.audioSab && this._audioBuffer) { this._audioBuffer.setPort(this._audioNode.port); } diff --git a/src/playback/context.js b/src/playback/context.js index 37d58f9..baf45a3 100644 --- a/src/playback/context.js +++ b/src/playback/context.js @@ -86,7 +86,9 @@ class PlaybackContext { if (streamInfo.acodec) { streamInfo.acodecSupported = this._cSupport.audio[streamInfo.acodec]; - this._ordVideoRenditions[vIdx].hasAudio = streamInfo.acodecSupported; + if (vIdx !== null && this._ordVideoRenditions[vIdx]) { + this._ordVideoRenditions[vIdx].hasAudio = streamInfo.acodecSupported; + } } } diff --git a/src/sldp/manager.js b/src/sldp/manager.js index 15ddef0..ee5b2e5 100644 --- a/src/sldp/manager.js +++ b/src/sldp/manager.js @@ -175,6 +175,7 @@ export class SLDPManager { // If no audio in the video renditions, take the first audio rendition if (this._context.audioRenditions.length > 0) { aIdx = this._context.audioRenditions[0].idx; + gotAudio = true; } }