From 9d65f39d52d485109cd70ebab83cc1c4b9f2e893 Mon Sep 17 00:00:00 2001 From: dax Date: Wed, 12 Apr 2017 16:58:48 -0700 Subject: [PATCH] Added support for changing the volume of AudioTrack as discussed in BUG=webrtc:6533 This is a short term solution to change the volume of an AudioTrack until applyConstraints for MediaStreamTracks has been implemented. This CL adds 1 new Java method & the relevant JNI file update: AudioTrack.java: public void setVolume(double volume); BUG=webrtc:6533 Review-Url: https://codereview.webrtc.org/2710683009 Cr-Commit-Position: refs/heads/master@{#17682} --- AUTHORS | 1 + webrtc/sdk/android/api/org/webrtc/AudioTrack.java | 9 +++++++++ webrtc/sdk/android/src/jni/peerconnection_jni.cc | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/AUTHORS b/AUTHORS index 126a1387ee..e13033eb72 100644 --- a/AUTHORS +++ b/AUTHORS @@ -12,6 +12,7 @@ Bridger Maxwell Christophe Dumez Cody Barnes Colin Plumb +Dax Booysen Dmitry Lizin Eric Rescorla, RTFM Inc. Frederik Riedel, Frogg GmbH diff --git a/webrtc/sdk/android/api/org/webrtc/AudioTrack.java b/webrtc/sdk/android/api/org/webrtc/AudioTrack.java index c33a9d8db1..6b71353610 100644 --- a/webrtc/sdk/android/api/org/webrtc/AudioTrack.java +++ b/webrtc/sdk/android/api/org/webrtc/AudioTrack.java @@ -15,4 +15,13 @@ public class AudioTrack extends MediaStreamTrack { public AudioTrack(long nativeTrack) { super(nativeTrack); } + + /** Sets the volume for the underlying MediaSource. Volume is a gain value in the range + * 0 to 10. + */ + public void setVolume(double volume) { + nativeSetVolume(super.nativeTrack, volume); + } + + private static native void nativeSetVolume(long nativeTrack, double volume); } diff --git a/webrtc/sdk/android/src/jni/peerconnection_jni.cc b/webrtc/sdk/android/src/jni/peerconnection_jni.cc index d31b5d7f95..0c380917b3 100644 --- a/webrtc/sdk/android/src/jni/peerconnection_jni.cc +++ b/webrtc/sdk/android/src/jni/peerconnection_jni.cc @@ -1194,6 +1194,13 @@ JOW(void, PeerConnectionFactory_shutdownInternalTracer)(JNIEnv* jni, jclass) { rtc::tracing::ShutdownInternalTracer(); } +JOW(void, AudioTrack_nativeSetVolume) +(JNIEnv*, jclass, jlong j_p, jdouble volume) { + rtc::scoped_refptr source( + reinterpret_cast(j_p)->GetSource()); + source->SetVolume(volume); +} + // Helper struct for working around the fact that CreatePeerConnectionFactory() // comes in two flavors: either entirely automagical (constructing its own // threads and deleting them on teardown, but no external codec factory support)