Skip to content
Snippets Groups Projects

Fix channel reading for non-native playback

Open Metehan Arslan requested to merge metehan-arslan/vlc.js:kiwi into incoming
1 file
+ 79
0
Compare changes
  • Side-by-side
  • Inline
From bcef74b8c798ccf7705b2c82fb134db84247e95f Mon Sep 17 00:00:00 2001
From: metehan-arslan <99metehanarslan@gmail.com>
Date: Fri, 9 Sep 2022 00:18:08 +0300
Subject: [PATCH] fix playback issue where media ch different than output ch
---
modules/audio_output/emscripten.c | 15 ++++++---------
modules/audio_output/webaudio/webaudio.js | 1 -
2 files changed, 6 insertions(+), 10 deletions(-)
diff --git a/modules/audio_output/emscripten.c b/modules/audio_output/emscripten.c
index 3317c3eb84..fc1bda1914 100644
--- a/modules/audio_output/emscripten.c
+++ b/modules/audio_output/emscripten.c
@@ -126,7 +126,6 @@ static void Close(vlc_object_t *obj)
{
audio_output_t *aout = (audio_output_t *) obj;
aout_sys_t *sys = (aout_sys_t *) aout->sys;
-
free(sys->sab);
free(sys);
}
@@ -168,27 +167,25 @@ static void Init(void *userData)
if (rate != sys->sample_rate)
sys->sample_rate = rate;
- if (channels != sys->channels)
- sys->channels = channels;
}
static int Start(audio_output_t *aout, audio_sample_format_t *restrict fmt)
{
aout_sys_t *sys = (aout_sys_t *) aout->sys;
- unsigned nbChannels = aout_FormatNbChannels(fmt);
-
+ sys->channels = aout_FormatNbChannels(fmt);
aout_SoftVolumeStart(aout);
- if (( nbChannels == 0 ) || !AOUT_FMT_LINEAR(fmt))
+ if (( sys->channels == 0 ) || !AOUT_FMT_LINEAR(fmt))
return VLC_EGENERIC;
fmt->i_format = VLC_CODEC_FL32;
+
if (sys->init == 0) {
- sys->channels = nbChannels;
sys->sample_rate = fmt->i_rate;
-
+
int ret = emscripten_dispatch_to_thread(
emscripten_main_browser_thread_id(),
EM_FUNC_SIG_VI,
Init, 0, aout );
+
if (ret != 0) {
msg_Err(aout, "error: could not dispatch Init to main thread!");
return VLC_EGENERIC;
@@ -231,7 +228,7 @@ static int Open(vlc_object_t *obj)
atomic_init(&sys->sab->tail, 0);
atomic_init(&sys->sab->can_write, 0);
if (unlikely (!sys->sab))
- return VLC_ENOMEM;
+ return VLC_ENOMEM;
memset(sys->sab, 0, sizeof(webaudio_buffer_t));
/*
diff --git a/modules/audio_output/webaudio/webaudio.js b/modules/audio_output/webaudio/webaudio.js
index f291470478..4980de6399 100644
--- a/modules/audio_output/webaudio/webaudio.js
+++ b/modules/audio_output/webaudio/webaudio.js
@@ -84,7 +84,6 @@ mergeInto(LibraryManager.library, {
if (audioCtx.destination.maxChannelCount < channels) {
console.error("Max number of channels of the browser is ", audioCtx.destination.maxChannelCount)
- channels = audioCtx.destination.maxChannelCount;
}
try {
--
2.37.2
Loading