diff options
author | jbeich <jbeich@FreeBSD.org> | 2016-09-20 05:58:53 +0800 |
---|---|---|
committer | jbeich <jbeich@FreeBSD.org> | 2016-09-20 05:58:53 +0800 |
commit | f78c314fb7b48eaf0d75b78761a1d599cab33b97 (patch) | |
tree | 81c47587275f8be50c263ea870820f9ebbada17b /mail | |
parent | 6f2fed31b32fa9ed84956bcaf1519e9a43b27825 (diff) | |
download | freebsd-ports-gnome-f78c314fb7b48eaf0d75b78761a1d599cab33b97.tar.gz freebsd-ports-gnome-f78c314fb7b48eaf0d75b78761a1d599cab33b97.tar.zst freebsd-ports-gnome-f78c314fb7b48eaf0d75b78761a1d599cab33b97.zip |
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
Diffstat (limited to 'mail')
-rw-r--r-- | mail/thunderbird/Makefile | 2 | ||||
-rw-r--r-- | mail/thunderbird/files/patch-bug1021761 | 75 |
2 files changed, 66 insertions, 11 deletions
diff --git a/mail/thunderbird/Makefile b/mail/thunderbird/Makefile index 6099959b47a9..ad547dcdaf5d 100644 --- a/mail/thunderbird/Makefile +++ b/mail/thunderbird/Makefile @@ -3,7 +3,7 @@ PORTNAME= thunderbird DISTVERSION= 45.3.0 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= mail news net-im ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \ MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source diff --git a/mail/thunderbird/files/patch-bug1021761 b/mail/thunderbird/files/patch-bug1021761 index 7cd9cfb5d77f..826912b321c9 100644 --- a/mail/thunderbird/files/patch-bug1021761 +++ b/mail/thunderbird/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 +++ mozilla/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; i<n; i++){ ++ buffer[i] = buffer[i]*pan[i%2]; ++ } ++} ++ ++ +static void *writer(void *stm) +{ + cubeb_stream* stream = (cubeb_stream*)stm; @@ -812,15 +832,25 @@ index 0000000..5e38e27 + if (stream->floating) { + 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 +--- mozilla/media/libcubeb/tests/moz.build ++++ mozilla/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 +--- mozilla/media/libcubeb/update.sh ++++ mozilla/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 --- mozilla/media/webrtc/signaling/test/common.build |