diff --git a/webrtc/modules/audio_device/android/audio_device_unittest.cc b/webrtc/modules/audio_device/android/audio_device_unittest.cc index 087bb2d386..f93763b084 100644 --- a/webrtc/modules/audio_device/android/audio_device_unittest.cc +++ b/webrtc/modules/audio_device/android/audio_device_unittest.cc @@ -831,6 +831,15 @@ TEST_F(AudioDeviceTest, StartStopPlayout) { StopPlayout(); } +// Tests that recording can be initiated, started and stopped. No audio callback +// is registered in this test. +TEST_F(AudioDeviceTest, StartStopRecording) { + StartRecording(); + StopRecording(); + StartRecording(); + StopRecording(); +} + // Verify that calling StopPlayout() will leave us in an uninitialized state // which will require a new call to InitPlayout(). This test does not call // StartPlayout() while being uninitialized since doing so will hit a diff --git a/webrtc/modules/audio_device/android/audio_record_jni.cc b/webrtc/modules/audio_device/android/audio_record_jni.cc index 8f43e4370b..ba3212afc3 100644 --- a/webrtc/modules/audio_device/android/audio_record_jni.cc +++ b/webrtc/modules/audio_device/android/audio_record_jni.cc @@ -175,6 +175,7 @@ int32_t AudioRecordJni::StopRecording() { thread_checker_java_.DetachFromThread(); initialized_ = false; recording_ = false; + direct_buffer_address_= nullptr; return 0; } diff --git a/webrtc/modules/audio_device/android/audio_track_jni.cc b/webrtc/modules/audio_device/android/audio_track_jni.cc index 297916f824..29b21ae998 100644 --- a/webrtc/modules/audio_device/android/audio_track_jni.cc +++ b/webrtc/modules/audio_device/android/audio_track_jni.cc @@ -156,6 +156,7 @@ int32_t AudioTrackJni::StopPlayout() { thread_checker_java_.DetachFromThread(); initialized_ = false; playing_ = false; + direct_buffer_address_ = nullptr; return 0; } @@ -215,6 +216,7 @@ void AudioTrackJni::OnCacheDirectBufferAddress( JNIEnv* env, jobject byte_buffer) { ALOGD("OnCacheDirectBufferAddress"); RTC_DCHECK(thread_checker_.CalledOnValidThread()); + RTC_DCHECK(!direct_buffer_address_); direct_buffer_address_ = env->GetDirectBufferAddress(byte_buffer); jlong capacity = env->GetDirectBufferCapacity(byte_buffer);