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}
This commit is contained in:
dax
2017-04-12 16:58:48 -07:00
committed by Commit bot
parent 85512b33e6
commit 9d65f39d52
3 changed files with 17 additions and 0 deletions

View File

@ -12,6 +12,7 @@ Bridger Maxwell <bridgeyman@gmail.com>
Christophe Dumez <ch.dumez@samsung.com>
Cody Barnes <conceptgenesis@gmail.com>
Colin Plumb
Dax Booysen <dax@younow.com>
Dmitry Lizin <sdkdimon@gmail.com>
Eric Rescorla, RTFM Inc. <ekr@rtfm.com>
Frederik Riedel, Frogg GmbH <frederik.riedel@frogg.io>

View File

@ -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);
}

View File

@ -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<AudioSourceInterface> source(
reinterpret_cast<AudioTrackInterface*>(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)