diff --git a/modules/audio_device/audio_device_data_observer.cc b/modules/audio_device/audio_device_data_observer.cc index 5f7259d13f..bcec3d5574 100644 --- a/modules/audio_device/audio_device_data_observer.cc +++ b/modules/audio_device/audio_device_data_observer.cc @@ -71,6 +71,11 @@ class ADMWrapper : public AudioDeviceModule, public AudioTransport { int64_t* elapsed_time_ms, int64_t* ntp_time_ms) override { int32_t res = 0; + // Set out parameters to safe values to be sure not to return corrupted + // data. + nSamplesOut = 0; + *elapsed_time_ms = -1; + *ntp_time_ms = -1; // Request data from audio transport. if (audio_transport_) { res = audio_transport_->NeedMorePlayData( diff --git a/modules/audio_device/include/audio_device_defines.h b/modules/audio_device/include/audio_device_defines.h index bb9a0db859..0495442ebe 100644 --- a/modules/audio_device/include/audio_device_defines.h +++ b/modules/audio_device/include/audio_device_defines.h @@ -45,6 +45,7 @@ class AudioTransport { const bool keyPressed, uint32_t& newMicLevel) = 0; // NOLINT + // Implementation has to setup safe values for all specified out parameters. virtual int32_t NeedMorePlayData(const size_t nSamples, const size_t nBytesPerSample, const size_t nChannels, diff --git a/modules/audio_device/include/test_audio_device.cc b/modules/audio_device/include/test_audio_device.cc index b6748228b5..8ee21601f0 100644 --- a/modules/audio_device/include/test_audio_device.cc +++ b/modules/audio_device/include/test_audio_device.cc @@ -174,8 +174,8 @@ class TestAudioDeviceModuleImpl } if (rendering_) { size_t samples_out = 0; - int64_t elapsed_time_ms = 0; - int64_t ntp_time_ms = 0; + int64_t elapsed_time_ms = -1; + int64_t ntp_time_ms = -1; const int sampling_frequency = renderer_->SamplingFrequency(); audio_callback_->NeedMorePlayData( SamplesPerFrame(sampling_frequency), 2, renderer_->NumChannels(),