diff --git a/talk/app/webrtc/java/jni/peerconnection_jni.cc b/talk/app/webrtc/java/jni/peerconnection_jni.cc index 54bcfb7d18..2185aef206 100644 --- a/talk/app/webrtc/java/jni/peerconnection_jni.cc +++ b/talk/app/webrtc/java/jni/peerconnection_jni.cc @@ -1971,12 +1971,25 @@ JOW(jlong, PeerConnectionFactory_nativeCreateVideoTrack)( return (jlong)track.release(); } -JOW(jlong, PeerConnectionFactory_nativeCreateAudioTrack)( - JNIEnv* jni, jclass, jlong native_factory, jstring id) { +JOW(jlong, PeerConnectionFactory_nativeCreateAudioSource)( + JNIEnv* jni, jclass, jlong native_factory, jobject j_constraints) { + scoped_ptr constraints( + new ConstraintsWrapper(jni, j_constraints)); talk_base::scoped_refptr factory( factoryFromJava(native_factory)); - talk_base::scoped_refptr track( - factory->CreateAudioTrack(JavaToStdString(jni, id), NULL)); + talk_base::scoped_refptr source( + factory->CreateAudioSource(constraints.get())); + return (jlong)source.release(); +} + +JOW(jlong, PeerConnectionFactory_nativeCreateAudioTrack)( + JNIEnv* jni, jclass, jlong native_factory, jstring id, + jlong native_source) { + talk_base::scoped_refptr factory( + factoryFromJava(native_factory)); + talk_base::scoped_refptr track(factory->CreateAudioTrack( + JavaToStdString(jni, id), + reinterpret_cast(native_source))); return (jlong)track.release(); } diff --git a/talk/app/webrtc/java/src/org/webrtc/PeerConnectionFactory.java b/talk/app/webrtc/java/src/org/webrtc/PeerConnectionFactory.java index 3125cfc11a..0d047800b2 100644 --- a/talk/app/webrtc/java/src/org/webrtc/PeerConnectionFactory.java +++ b/talk/app/webrtc/java/src/org/webrtc/PeerConnectionFactory.java @@ -85,8 +85,13 @@ public class PeerConnectionFactory { nativeFactory, id, source.nativeSource)); } - public AudioTrack createAudioTrack(String id) { - return new AudioTrack(nativeCreateAudioTrack(nativeFactory, id)); + public AudioSource createAudioSource(MediaConstraints constraints) { + return new AudioSource(nativeCreateAudioSource(nativeFactory, constraints)); + } + + public AudioTrack createAudioTrack(String id, AudioSource source) { + return new AudioTrack(nativeCreateAudioTrack( + nativeFactory, id, source.nativeSource)); } public void dispose() { @@ -112,8 +117,11 @@ public class PeerConnectionFactory { private static native long nativeCreateVideoTrack( long nativeFactory, String id, long nativeVideoSource); + private static native long nativeCreateAudioSource( + long nativeFactory, MediaConstraints constraints); + private static native long nativeCreateAudioTrack( - long nativeFactory, String id); + long nativeFactory, String id, long nativeSource); private static native void freeFactory(long nativeFactory); } diff --git a/talk/app/webrtc/javatests/src/org/webrtc/PeerConnectionTest.java b/talk/app/webrtc/javatests/src/org/webrtc/PeerConnectionTest.java index 3bf128e16f..d2fb7b7b44 100644 --- a/talk/app/webrtc/javatests/src/org/webrtc/PeerConnectionTest.java +++ b/talk/app/webrtc/javatests/src/org/webrtc/PeerConnectionTest.java @@ -481,7 +481,8 @@ public class PeerConnectionTest extends TestCase { // Just for fun, let's remove and re-add the track. lMS.removeTrack(videoTrack); lMS.addTrack(videoTrack); - lMS.addTrack(factory.createAudioTrack(audioTrackId)); + lMS.addTrack(factory.createAudioTrack( + audioTrackId, factory.createAudioSource(new MediaConstraints()))); pc.addStream(lMS, new MediaConstraints()); return new WeakReference(lMS); } diff --git a/talk/examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java b/talk/examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java index 1754994dc2..f75c7c9659 100644 --- a/talk/examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java +++ b/talk/examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java @@ -242,7 +242,9 @@ public class AppRTCDemoActivity extends Activity lMS.addTrack(videoTrack); } if (appRtcClient.audioConstraints() != null) { - lMS.addTrack(factory.createAudioTrack("ARDAMSa0")); + lMS.addTrack(factory.createAudioTrack( + "ARDAMSa0", + factory.createAudioSource(appRtcClient.audioConstraints()))); } pc.addStream(lMS, new MediaConstraints()); }