webrtc/modules/audio_coding/test/TestStereo.h
Niels Möller 87e2d785a0 Prepare for splitting FrameType into AudioFrameType and VideoFrameType
This cl deprecates the FrameType enum, and adds aliases AudioFrameType
and VideoFrameType.

After downstream usage is updated, the enums will be separated
and be moved out of common_types.h.

Bug: webrtc:6883
Change-Id: I2aaf660169da45f22574b4cbb16aea8522cc07a6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/123184
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27011}
2019-03-07 10:12:57 +00:00

100 lines
2.7 KiB
C++

/*
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef MODULES_AUDIO_CODING_TEST_TESTSTEREO_H_
#define MODULES_AUDIO_CODING_TEST_TESTSTEREO_H_
#include <math.h>
#include <memory>
#include "modules/audio_coding/include/audio_coding_module.h"
#include "modules/audio_coding/test/PCMFile.h"
#define PCMA_AND_PCMU
namespace webrtc {
enum StereoMonoMode { kNotSet, kMono, kStereo };
class TestPackStereo : public AudioPacketizationCallback {
public:
TestPackStereo();
~TestPackStereo();
void RegisterReceiverACM(AudioCodingModule* acm);
int32_t SendData(const AudioFrameType frame_type,
const uint8_t payload_type,
const uint32_t timestamp,
const uint8_t* payload_data,
const size_t payload_size,
const RTPFragmentationHeader* fragmentation) override;
uint16_t payload_size();
uint32_t timestamp_diff();
void reset_payload_size();
void set_codec_mode(StereoMonoMode mode);
void set_lost_packet(bool lost);
private:
AudioCodingModule* receiver_acm_;
int16_t seq_no_;
uint32_t timestamp_diff_;
uint32_t last_in_timestamp_;
uint64_t total_bytes_;
int payload_size_;
StereoMonoMode codec_mode_;
// Simulate packet losses
bool lost_packet_;
};
class TestStereo {
public:
TestStereo();
~TestStereo();
void Perform();
private:
// The default value of '-1' indicates that the registration is based only on
// codec name and a sampling frequncy matching is not required. This is useful
// for codecs which support several sampling frequency.
void RegisterSendCodec(char side,
char* codec_name,
int32_t samp_freq_hz,
int rate,
int pack_size,
int channels);
void Run(TestPackStereo* channel,
int in_channels,
int out_channels,
int percent_loss = 0);
void OpenOutFile(int16_t test_number);
std::unique_ptr<AudioCodingModule> acm_a_;
std::unique_ptr<AudioCodingModule> acm_b_;
TestPackStereo* channel_a2b_;
PCMFile* in_file_stereo_;
PCMFile* in_file_mono_;
PCMFile out_file_;
int16_t test_cntr_;
uint16_t pack_size_samp_;
uint16_t pack_size_bytes_;
int counter_;
char* send_codec_name_;
};
} // namespace webrtc
#endif // MODULES_AUDIO_CODING_TEST_TESTSTEREO_H_