From 5a8879add2c41027705ce0cc7d3f659ab4d4bb7f Mon Sep 17 00:00:00 2001 From: Jan Beich Date: Mon, 19 Sep 2016 21:58:53 +0000 Subject: gecko: update OSS fallback for HTML5 audio To test deinstall alsa-lib (and pulseaudio) after installing firefox/seamonkey/etc. Before OSS can be exposed as an option WebRTC has to either support it as well or pass build without any audio backends. Changes: https://bugzilla.mozilla.org/show_bug.cgi?id=1021761#c67 --- www/libxul/Makefile | 2 +- www/libxul/files/patch-bug1021761 | 75 +++++++++++++++++++++++++++++++++------ 2 files changed, 66 insertions(+), 11 deletions(-) (limited to 'www/libxul') diff --git a/www/libxul/Makefile b/www/libxul/Makefile index b1ad8a1d26a9..a067620e0c0d 100644 --- a/www/libxul/Makefile +++ b/www/libxul/Makefile @@ -3,7 +3,7 @@ PORTNAME= libxul DISTVERSION= 45.4.0 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES?= www devel MASTER_SITES= MOZILLA/firefox/releases/${DISTVERSION}esr/source \ MOZILLA/firefox/candidates/${DISTVERSION}esr-candidates/build2/source diff --git a/www/libxul/files/patch-bug1021761 b/www/libxul/files/patch-bug1021761 index 86c4d9b0f19b..3d6ff7781bb0 100644 --- a/www/libxul/files/patch-bug1021761 +++ b/www/libxul/files/patch-bug1021761 @@ -51,7 +51,7 @@ index 48e60c0..ec08417 100644 + + if test "$ac_cv_header_sys_soundcard_h" != "yes" -a \ + "$ac_cv_header_soundcard_h" != "yes"; then -+ AC_MSG_ERROR([Need OSS for Ogg, Wave or WebM decoding on $OS_TARGET. Disable with --disable-ogg --disable-wave --disable-webm.]) ++ AC_MSG_ERROR([Need OSS for Ogg, Wave or WebM decoding on $OS_TARGET. Disable with --without-oss.]) + fi + + dnl Assume NetBSD implementation over SunAudio @@ -643,7 +643,7 @@ new file mode 100644 index 0000000..5e38e27 --- /dev/null +++ media/libcubeb/src/cubeb_oss.c -@@ -0,0 +1,402 @@ +@@ -0,0 +1,432 @@ +/* + * Copyright © 2014 Mozilla Foundation + * @@ -769,8 +769,8 @@ index 0000000..5e38e27 + return got; +} + -+static void apply_volume(int16_t* buffer, unsigned int n, -+ float volume, float panning) ++static void apply_volume_int(int16_t* buffer, unsigned int n, ++ float volume, float panning) +{ + float left = volume; + float right = volume; @@ -788,6 +788,26 @@ index 0000000..5e38e27 + } +} + ++static void apply_volume_float(float* buffer, unsigned int n, ++ float volume, float panning) ++{ ++ float left = volume; ++ float right = volume; ++ unsigned int i; ++ float pan[2]; ++ if (panning<0) { ++ right *= (1+panning); ++ } else { ++ left *= (1-panning); ++ } ++ pan[0] = left; ++ pan[1] = right; ++ for(i=0; ifloating) { + got = run_data_callback(stream, f_buffer, + OSS_BUFFER_SIZE/stream->params.channels); ++ apply_volume_float(f_buffer, got*stream->params.channels, ++ stream->volume, stream->panning); + for (i=0; i<((unsigned long)got)*stream->params.channels; i++) { -+ buffer[i] = f_buffer[i]*32767.0; ++ /* Clipping is prefered to overflow */ ++ if(f_buffer[i]>=1.0){ ++ f_buffer[i]=1.0; ++ } ++ if(f_buffer[i]<=-1.0){ ++ f_buffer[i]=-1.0; ++ } ++ /* One might think that multipling by 32767.0 is logical but results in clipping */ ++ buffer[i] = f_buffer[i]*32767.0; + } + } else { + got = run_data_callback(stream, buffer, + OSS_BUFFER_SIZE/stream->params.channels); ++ apply_volume_int(buffer, got*stream->params.channels, ++ stream->volume, stream->panning); + } -+ apply_volume(buffer, got*stream->params.channels, -+ stream->volume, stream->panning); + if (got<0) { + run_state_callback(stream, CUBEB_STATE_ERROR); + break; @@ -891,9 +921,9 @@ index 0000000..5e38e27 + oss_try_set_latency(stream, latency); + + stream->floating = 0; -+ SET(SNDCTL_DSP_CHANNELS, stream_params.channels); -+ SET(SNDCTL_DSP_SPEED, stream_params.rate); -+ switch (stream_params.format) { ++ SET(SNDCTL_DSP_CHANNELS, stream->params.channels); ++ SET(SNDCTL_DSP_SPEED, stream->params.rate); ++ switch (stream->params.format) { + case CUBEB_SAMPLE_S16LE: + SET(SNDCTL_DSP_SETFMT, AFMT_S16_LE); + break; @@ -1070,6 +1100,31 @@ index 8b7a0dd..31212ce 100644 +CFLAGS += CONFIG['MOZ_OSS_CFLAGS'] CFLAGS += CONFIG['MOZ_ALSA_CFLAGS'] CFLAGS += CONFIG['MOZ_PULSEAUDIO_CFLAGS'] + +diff --git media/libcubeb/tests/moz.build media/libcubeb/tests/moz.build +index 1b17c7b..48b56c2 100644 +--- media/libcubeb/tests/moz.build ++++ media/libcubeb/tests/moz.build +@@ -73,7 +73,6 @@ elif CONFIG['OS_TARGET'] == 'OpenBSD': + 'sndio', + ] + else: +- OS_LIBS += CONFIG['MOZ_ALSA_LIBS'] + OS_LIBS += CONFIG['MOZ_PULSEAUDIO_LIBS'] + + if CONFIG['GNU_CXX']: +diff --git media/libcubeb/update.sh media/libcubeb/update.sh +index a96badd..2f9585e 100755 +--- media/libcubeb/update.sh ++++ media/libcubeb/update.sh +@@ -10,6 +10,7 @@ cp $1/src/cubeb_audiounit.c src + cp $1/src/cubeb_pulse.c src + cp $1/src/cubeb_sndio.c src + cp $1/src/cubeb_opensl.c src ++cp $1/src/cubeb_oss.c src + cp $1/src/cubeb_audiotrack.c src + cp $1/src/cubeb_wasapi.cpp src + cp $1/src/cubeb_resampler.h src diff --git media/webrtc/signaling/test/common.build media/webrtc/signaling/test/common.build index 991f03f..3d99eb5 100644 --- media/webrtc/signaling/test/common.build -- cgit v1.2.3