// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifdef UNSAFE_BUFFERS_BUILD // TODO(crbug.com/40285824): Remove this and convert code to safer constructs. #pragma allow_unsafe_buffers #endif #include "remoting/codec/audio_encoder_opus.h" #include <stddef.h> #include <stdint.h> #include <cmath> #include <memory> #include <numbers> #include <utility> #include "base/logging.h" #include "remoting/codec/audio_decoder_opus.h" #include "testing/gtest/include/gtest/gtest.h" namespace remoting { namespace { // Maximum value that can be encoded in a 16-bit signed sample. const int kMaxSampleValue = …; const int kChannels = …; // Phase shift between left and right channels. const double kChannelPhaseShift = …; // The sampling rate that OPUS uses internally and that we expect to get // from the decoder. const AudioPacket_SamplingRate kDefaultSamplingRate = AudioPacket::SAMPLING_RATE_48000; // Maximum latency expected from the encoder. const int kMaxLatencyMs = …; // When verifying results ignore the first 1k samples. This is necessary because // it takes some time for the codec to adjust for the input signal. const int kSkippedFirstSamples = …; // Maximum standard deviation of the difference between original and decoded // signals as a proportion of kMaxSampleValue. For two unrelated signals this // difference will be close to 1.0, even for signals that differ only slightly. // The value is chosen such that all the tests pass normally, but fail with // small changes (e.g. one sample shift between signals). const double kMaxSignalDeviation = …; } // namespace class OpusAudioEncoderTest : public testing::Test { … }; TEST_F(OpusAudioEncoderTest, CreateAndDestroy) { … } TEST_F(OpusAudioEncoderTest, NoResampling) { … } TEST_F(OpusAudioEncoderTest, Resampling) { … } TEST_F(OpusAudioEncoderTest, BufferSizeAndResampling) { … } } // namespace remoting