Mark all virtual overrides in the hierarchy of AudioPacketizationCallback,
RTPStream, and NetEq as such. Also mark all other virtual overrides in the same files. This will make further changes to these classes safer by ensuring that the compile breaks if the base class changes and not all overrides are fixed. This also deletes ACMTest.cc, which existed solely to define ~ACMTest(), which was marked pure virtual in the header. (Pure virtual destructors still need a definition.) Because there is another pure virtual method in this class, the class is already abstract, so there's no benefit to making the desturctor pure. Making it non-pure allows removing the separate source file. BUG=none TEST=none R=henrik.lundin@webrtc.org, niklas.enbom@webrtc.org Review URL: https://webrtc-codereview.appspot.com/29389004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@7144 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@ -54,7 +54,7 @@ class AcmReceiverTest : public AudioPacketizationCallback,
|
||||
|
||||
~AcmReceiverTest() {}
|
||||
|
||||
void SetUp() {
|
||||
virtual void SetUp() OVERRIDE {
|
||||
ASSERT_TRUE(receiver_.get() != NULL);
|
||||
ASSERT_TRUE(acm_.get() != NULL);
|
||||
for (int n = 0; n < ACMCodecDB::kNumCodecs; n++) {
|
||||
@ -75,7 +75,7 @@ class AcmReceiverTest : public AudioPacketizationCallback,
|
||||
rtp_header_.type.Audio.isCNG = false;
|
||||
}
|
||||
|
||||
void TearDown() {
|
||||
virtual void TearDown() OVERRIDE {
|
||||
}
|
||||
|
||||
void InsertOnePacketOfSilence(int codec_id) {
|
||||
@ -125,7 +125,7 @@ class AcmReceiverTest : public AudioPacketizationCallback,
|
||||
uint32_t timestamp,
|
||||
const uint8_t* payload_data,
|
||||
uint16_t payload_len_bytes,
|
||||
const RTPFragmentationHeader* fragmentation) {
|
||||
const RTPFragmentationHeader* fragmentation) OVERRIDE {
|
||||
if (frame_type == kFrameEmpty)
|
||||
return 0;
|
||||
|
||||
|
@ -42,7 +42,7 @@ class AcmSendTest : public AudioPacketizationCallback, public PacketSource {
|
||||
// Returns the next encoded packet. Returns NULL if the test duration was
|
||||
// exceeded. Ownership of the packet is handed over to the caller.
|
||||
// Inherited from PacketSource.
|
||||
Packet* NextPacket();
|
||||
virtual Packet* NextPacket() OVERRIDE;
|
||||
|
||||
// Inherited from AudioPacketizationCallback.
|
||||
virtual int32_t SendData(
|
||||
|
@ -124,9 +124,9 @@ class AudioCodingModuleTest : public ::testing::Test {
|
||||
|
||||
~AudioCodingModuleTest() {}
|
||||
|
||||
void TearDown() {}
|
||||
void TearDown() OVERRIDE {}
|
||||
|
||||
void SetUp() {
|
||||
void SetUp() OVERRIDE {
|
||||
acm_.reset(AudioCodingModule::Create(id_, clock_));
|
||||
|
||||
RegisterCodec();
|
||||
@ -309,7 +309,7 @@ class AudioCodingModuleMtTest : public AudioCodingModuleTest {
|
||||
clock_ = fake_clock_.get();
|
||||
}
|
||||
|
||||
void SetUp() {
|
||||
virtual void SetUp() OVERRIDE {
|
||||
AudioCodingModuleTest::SetUp();
|
||||
StartThreads();
|
||||
}
|
||||
@ -321,7 +321,7 @@ class AudioCodingModuleMtTest : public AudioCodingModuleTest {
|
||||
ASSERT_TRUE(pull_audio_thread_->Start(thread_id));
|
||||
}
|
||||
|
||||
void TearDown() {
|
||||
virtual void TearDown() OVERRIDE {
|
||||
AudioCodingModuleTest::TearDown();
|
||||
pull_audio_thread_->Stop();
|
||||
send_thread_->Stop();
|
||||
@ -437,7 +437,7 @@ class AcmIsacMtTest : public AudioCodingModuleMtTest {
|
||||
|
||||
~AcmIsacMtTest() {}
|
||||
|
||||
void SetUp() {
|
||||
virtual void SetUp() OVERRIDE {
|
||||
AudioCodingModuleTest::SetUp();
|
||||
|
||||
// Set up input audio source to read from specified file, loop after 5
|
||||
@ -460,7 +460,7 @@ class AcmIsacMtTest : public AudioCodingModuleMtTest {
|
||||
StartThreads();
|
||||
}
|
||||
|
||||
virtual void RegisterCodec() {
|
||||
virtual void RegisterCodec() OVERRIDE {
|
||||
COMPILE_ASSERT(kSampleRateHz == 16000, test_designed_for_isac_16khz);
|
||||
AudioCodingModule::Codec("ISAC", &codec_, kSampleRateHz, 1);
|
||||
codec_.pltype = kPayloadType;
|
||||
@ -471,7 +471,7 @@ class AcmIsacMtTest : public AudioCodingModuleMtTest {
|
||||
ASSERT_EQ(0, acm_->RegisterSendCodec(codec_));
|
||||
}
|
||||
|
||||
void InsertPacket() {
|
||||
virtual void InsertPacket() OVERRIDE {
|
||||
int num_calls = packet_cb_.num_calls(); // Store locally for thread safety.
|
||||
if (num_calls > last_packet_number_) {
|
||||
// Get the new payload out from the callback handler.
|
||||
@ -490,16 +490,16 @@ class AcmIsacMtTest : public AudioCodingModuleMtTest {
|
||||
&last_payload_vec_[0], last_payload_vec_.size(), rtp_header_));
|
||||
}
|
||||
|
||||
void InsertAudio() {
|
||||
virtual void InsertAudio() OVERRIDE {
|
||||
memcpy(input_frame_.data_, audio_loop_.GetNextBlock(), kNumSamples10ms);
|
||||
AudioCodingModuleTest::InsertAudio();
|
||||
}
|
||||
|
||||
void Encode() { ASSERT_GE(acm_->Process(), 0); }
|
||||
virtual void Encode() OVERRIDE { ASSERT_GE(acm_->Process(), 0); }
|
||||
|
||||
// This method is the same as AudioCodingModuleMtTest::TestDone(), but here
|
||||
// it is using the constants defined in this class (i.e., shorter test run).
|
||||
virtual bool TestDone() {
|
||||
virtual bool TestDone() OVERRIDE {
|
||||
if (packet_cb_.num_calls() > kNumPackets) {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
if (pull_audio_count_ > kNumPullCalls) {
|
||||
@ -694,7 +694,7 @@ class AcmSenderBitExactness : public ::testing::Test,
|
||||
// Returns a pointer to the next packet. Returns NULL if the source is
|
||||
// depleted (i.e., the test duration is exceeded), or if an error occurred.
|
||||
// Inherited from test::PacketSource.
|
||||
test::Packet* NextPacket() OVERRIDE {
|
||||
virtual test::Packet* NextPacket() OVERRIDE {
|
||||
// Get the next packet from AcmSendTest. Ownership of |packet| is
|
||||
// transferred to this method.
|
||||
test::Packet* packet = send_test_->NextPacket();
|
||||
|
@ -1,13 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2011 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.
|
||||
*/
|
||||
|
||||
#include "ACMTest.h"
|
||||
|
||||
ACMTest::~ACMTest() {}
|
@ -14,7 +14,7 @@
|
||||
class ACMTest {
|
||||
public:
|
||||
ACMTest() {}
|
||||
virtual ~ACMTest() = 0;
|
||||
virtual ~ACMTest() {}
|
||||
virtual void Perform() = 0;
|
||||
};
|
||||
|
||||
|
@ -50,10 +50,11 @@ class Channel : public AudioPacketizationCallback {
|
||||
Channel(int16_t chID = -1);
|
||||
~Channel();
|
||||
|
||||
int32_t SendData(const FrameType frameType, const uint8_t payloadType,
|
||||
const uint32_t timeStamp, const uint8_t* payloadData,
|
||||
const uint16_t payloadSize,
|
||||
const RTPFragmentationHeader* fragmentation);
|
||||
virtual int32_t SendData(
|
||||
const FrameType frameType, const uint8_t payloadType,
|
||||
const uint32_t timeStamp, const uint8_t* payloadData,
|
||||
const uint16_t payloadSize,
|
||||
const RTPFragmentationHeader* fragmentation) OVERRIDE;
|
||||
|
||||
void RegisterReceiverACM(AudioCodingModule *acm);
|
||||
|
||||
|
@ -29,10 +29,11 @@ class TestPacketization : public AudioPacketizationCallback {
|
||||
public:
|
||||
TestPacketization(RTPStream *rtpStream, uint16_t frequency);
|
||||
~TestPacketization();
|
||||
virtual int32_t SendData(const FrameType frameType, const uint8_t payloadType,
|
||||
const uint32_t timeStamp, const uint8_t* payloadData,
|
||||
const uint16_t payloadSize,
|
||||
const RTPFragmentationHeader* fragmentation);
|
||||
virtual int32_t SendData(
|
||||
const FrameType frameType, const uint8_t payloadType,
|
||||
const uint32_t timeStamp, const uint8_t* payloadData,
|
||||
const uint16_t payloadSize,
|
||||
const RTPFragmentationHeader* fragmentation) OVERRIDE;
|
||||
|
||||
private:
|
||||
static void MakeRTPheader(uint8_t* rtpHeader, uint8_t payloadType,
|
||||
@ -100,7 +101,7 @@ class EncodeDecodeTest : public ACMTest {
|
||||
public:
|
||||
EncodeDecodeTest();
|
||||
explicit EncodeDecodeTest(int testMode);
|
||||
virtual void Perform();
|
||||
virtual void Perform() OVERRIDE;
|
||||
|
||||
uint16_t _playoutFreq;
|
||||
uint8_t _testMode;
|
||||
|
@ -65,14 +65,14 @@ class RTPBuffer : public RTPStream {
|
||||
|
||||
~RTPBuffer();
|
||||
|
||||
void Write(const uint8_t payloadType, const uint32_t timeStamp,
|
||||
const int16_t seqNo, const uint8_t* payloadData,
|
||||
const uint16_t payloadSize, uint32_t frequency);
|
||||
virtual void Write(const uint8_t payloadType, const uint32_t timeStamp,
|
||||
const int16_t seqNo, const uint8_t* payloadData,
|
||||
const uint16_t payloadSize, uint32_t frequency) OVERRIDE;
|
||||
|
||||
uint16_t Read(WebRtcRTPHeader* rtpInfo, uint8_t* payloadData,
|
||||
uint16_t payloadSize, uint32_t* offset);
|
||||
virtual uint16_t Read(WebRtcRTPHeader* rtpInfo, uint8_t* payloadData,
|
||||
uint16_t payloadSize, uint32_t* offset) OVERRIDE;
|
||||
|
||||
virtual bool EndOfFile() const;
|
||||
virtual bool EndOfFile() const OVERRIDE;
|
||||
|
||||
private:
|
||||
RWLockWrapper* _queueRWLock;
|
||||
@ -97,14 +97,14 @@ class RTPFile : public RTPStream {
|
||||
|
||||
void ReadHeader();
|
||||
|
||||
void Write(const uint8_t payloadType, const uint32_t timeStamp,
|
||||
const int16_t seqNo, const uint8_t* payloadData,
|
||||
const uint16_t payloadSize, uint32_t frequency);
|
||||
virtual void Write(const uint8_t payloadType, const uint32_t timeStamp,
|
||||
const int16_t seqNo, const uint8_t* payloadData,
|
||||
const uint16_t payloadSize, uint32_t frequency) OVERRIDE;
|
||||
|
||||
uint16_t Read(WebRtcRTPHeader* rtpInfo, uint8_t* payloadData,
|
||||
uint16_t payloadSize, uint32_t* offset);
|
||||
virtual uint16_t Read(WebRtcRTPHeader* rtpInfo, uint8_t* payloadData,
|
||||
uint16_t payloadSize, uint32_t* offset) OVERRIDE;
|
||||
|
||||
bool EndOfFile() const {
|
||||
virtual bool EndOfFile() const OVERRIDE {
|
||||
return _rtpEOF;
|
||||
}
|
||||
|
||||
|
@ -28,10 +28,11 @@ class TestPack : public AudioPacketizationCallback {
|
||||
|
||||
void RegisterReceiverACM(AudioCodingModule* acm);
|
||||
|
||||
int32_t SendData(FrameType frame_type, uint8_t payload_type,
|
||||
uint32_t timestamp, const uint8_t* payload_data,
|
||||
uint16_t payload_size,
|
||||
const RTPFragmentationHeader* fragmentation);
|
||||
virtual int32_t SendData(
|
||||
FrameType frame_type, uint8_t payload_type,
|
||||
uint32_t timestamp, const uint8_t* payload_data,
|
||||
uint16_t payload_size,
|
||||
const RTPFragmentationHeader* fragmentation) OVERRIDE;
|
||||
|
||||
uint16_t payload_size();
|
||||
uint32_t timestamp_diff();
|
||||
@ -52,7 +53,7 @@ class TestAllCodecs : public ACMTest {
|
||||
explicit TestAllCodecs(int test_mode);
|
||||
~TestAllCodecs();
|
||||
|
||||
void Perform();
|
||||
virtual void Perform() OVERRIDE;
|
||||
|
||||
private:
|
||||
// The default value of '-1' indicates that the registration is based only on
|
||||
|
@ -33,12 +33,13 @@ class TestPackStereo : public AudioPacketizationCallback {
|
||||
|
||||
void RegisterReceiverACM(AudioCodingModule* acm);
|
||||
|
||||
virtual int32_t SendData(const FrameType frame_type,
|
||||
const uint8_t payload_type,
|
||||
const uint32_t timestamp,
|
||||
const uint8_t* payload_data,
|
||||
const uint16_t payload_size,
|
||||
const RTPFragmentationHeader* fragmentation);
|
||||
virtual int32_t SendData(
|
||||
const FrameType frame_type,
|
||||
const uint8_t payload_type,
|
||||
const uint32_t timestamp,
|
||||
const uint8_t* payload_data,
|
||||
const uint16_t payload_size,
|
||||
const RTPFragmentationHeader* fragmentation) OVERRIDE;
|
||||
|
||||
uint16_t payload_size();
|
||||
uint32_t timestamp_diff();
|
||||
@ -63,7 +64,7 @@ class TestStereo : public ACMTest {
|
||||
explicit TestStereo(int test_mode);
|
||||
~TestStereo();
|
||||
|
||||
void Perform();
|
||||
virtual void Perform() OVERRIDE;
|
||||
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
|
||||
|
@ -35,10 +35,11 @@ class DualStreamTest : public AudioPacketizationCallback,
|
||||
|
||||
void ApiTest();
|
||||
|
||||
int32_t SendData(FrameType frameType, uint8_t payload_type,
|
||||
uint32_t timestamp, const uint8_t* payload_data,
|
||||
uint16_t payload_size,
|
||||
const RTPFragmentationHeader* fragmentation);
|
||||
virtual int32_t SendData(
|
||||
FrameType frameType, uint8_t payload_type,
|
||||
uint32_t timestamp, const uint8_t* payload_data,
|
||||
uint16_t payload_size,
|
||||
const RTPFragmentationHeader* fragmentation) OVERRIDE;
|
||||
|
||||
void Perform(bool start_in_sync, int num_channels_input);
|
||||
|
||||
|
@ -82,7 +82,7 @@ class NetEqImpl : public webrtc::NetEq {
|
||||
virtual int InsertPacket(const WebRtcRTPHeader& rtp_header,
|
||||
const uint8_t* payload,
|
||||
int length_bytes,
|
||||
uint32_t receive_timestamp);
|
||||
uint32_t receive_timestamp) OVERRIDE;
|
||||
|
||||
// Inserts a sync-packet into packet queue. Sync-packets are decoded to
|
||||
// silence and are intended to keep AV-sync intact in an event of long packet
|
||||
@ -94,7 +94,7 @@ class NetEqImpl : public webrtc::NetEq {
|
||||
// can be implied by inserting a sync-packet.
|
||||
// Returns kOk on success, kFail on failure.
|
||||
virtual int InsertSyncPacket(const WebRtcRTPHeader& rtp_header,
|
||||
uint32_t receive_timestamp);
|
||||
uint32_t receive_timestamp) OVERRIDE;
|
||||
|
||||
// Instructs NetEq to deliver 10 ms of audio data. The data is written to
|
||||
// |output_audio|, which can hold (at least) |max_length| elements.
|
||||
@ -106,12 +106,12 @@ class NetEqImpl : public webrtc::NetEq {
|
||||
// Returns kOK on success, or kFail in case of an error.
|
||||
virtual int GetAudio(size_t max_length, int16_t* output_audio,
|
||||
int* samples_per_channel, int* num_channels,
|
||||
NetEqOutputType* type);
|
||||
NetEqOutputType* type) OVERRIDE;
|
||||
|
||||
// Associates |rtp_payload_type| with |codec| and stores the information in
|
||||
// the codec database. Returns kOK on success, kFail on failure.
|
||||
virtual int RegisterPayloadType(enum NetEqDecoder codec,
|
||||
uint8_t rtp_payload_type);
|
||||
uint8_t rtp_payload_type) OVERRIDE;
|
||||
|
||||
// Provides an externally created decoder object |decoder| to insert in the
|
||||
// decoder database. The decoder implements a decoder of type |codec| and
|
||||
@ -119,80 +119,81 @@ class NetEqImpl : public webrtc::NetEq {
|
||||
// failure.
|
||||
virtual int RegisterExternalDecoder(AudioDecoder* decoder,
|
||||
enum NetEqDecoder codec,
|
||||
uint8_t rtp_payload_type);
|
||||
uint8_t rtp_payload_type) OVERRIDE;
|
||||
|
||||
// Removes |rtp_payload_type| from the codec database. Returns 0 on success,
|
||||
// -1 on failure.
|
||||
virtual int RemovePayloadType(uint8_t rtp_payload_type);
|
||||
virtual int RemovePayloadType(uint8_t rtp_payload_type) OVERRIDE;
|
||||
|
||||
virtual bool SetMinimumDelay(int delay_ms);
|
||||
virtual bool SetMinimumDelay(int delay_ms) OVERRIDE;
|
||||
|
||||
virtual bool SetMaximumDelay(int delay_ms);
|
||||
virtual bool SetMaximumDelay(int delay_ms) OVERRIDE;
|
||||
|
||||
virtual int LeastRequiredDelayMs() const;
|
||||
virtual int LeastRequiredDelayMs() const OVERRIDE;
|
||||
|
||||
virtual int SetTargetDelay() { return kNotImplemented; }
|
||||
virtual int SetTargetDelay() OVERRIDE { return kNotImplemented; }
|
||||
|
||||
virtual int TargetDelay() { return kNotImplemented; }
|
||||
virtual int TargetDelay() OVERRIDE { return kNotImplemented; }
|
||||
|
||||
virtual int CurrentDelay() { return kNotImplemented; }
|
||||
virtual int CurrentDelay() OVERRIDE { return kNotImplemented; }
|
||||
|
||||
// Sets the playout mode to |mode|.
|
||||
virtual void SetPlayoutMode(NetEqPlayoutMode mode);
|
||||
virtual void SetPlayoutMode(NetEqPlayoutMode mode) OVERRIDE;
|
||||
|
||||
// Returns the current playout mode.
|
||||
virtual NetEqPlayoutMode PlayoutMode() const;
|
||||
virtual NetEqPlayoutMode PlayoutMode() const OVERRIDE;
|
||||
|
||||
// Writes the current network statistics to |stats|. The statistics are reset
|
||||
// after the call.
|
||||
virtual int NetworkStatistics(NetEqNetworkStatistics* stats);
|
||||
virtual int NetworkStatistics(NetEqNetworkStatistics* stats) OVERRIDE;
|
||||
|
||||
// Writes the last packet waiting times (in ms) to |waiting_times|. The number
|
||||
// of values written is no more than 100, but may be smaller if the interface
|
||||
// is polled again before 100 packets has arrived.
|
||||
virtual void WaitingTimes(std::vector<int>* waiting_times);
|
||||
virtual void WaitingTimes(std::vector<int>* waiting_times) OVERRIDE;
|
||||
|
||||
// Writes the current RTCP statistics to |stats|. The statistics are reset
|
||||
// and a new report period is started with the call.
|
||||
virtual void GetRtcpStatistics(RtcpStatistics* stats);
|
||||
virtual void GetRtcpStatistics(RtcpStatistics* stats) OVERRIDE;
|
||||
|
||||
// Same as RtcpStatistics(), but does not reset anything.
|
||||
virtual void GetRtcpStatisticsNoReset(RtcpStatistics* stats);
|
||||
virtual void GetRtcpStatisticsNoReset(RtcpStatistics* stats) OVERRIDE;
|
||||
|
||||
// Enables post-decode VAD. When enabled, GetAudio() will return
|
||||
// kOutputVADPassive when the signal contains no speech.
|
||||
virtual void EnableVad();
|
||||
virtual void EnableVad() OVERRIDE;
|
||||
|
||||
// Disables post-decode VAD.
|
||||
virtual void DisableVad();
|
||||
virtual void DisableVad() OVERRIDE;
|
||||
|
||||
virtual bool GetPlayoutTimestamp(uint32_t* timestamp);
|
||||
virtual bool GetPlayoutTimestamp(uint32_t* timestamp) OVERRIDE;
|
||||
|
||||
virtual int SetTargetNumberOfChannels() { return kNotImplemented; }
|
||||
virtual int SetTargetNumberOfChannels() OVERRIDE { return kNotImplemented; }
|
||||
|
||||
virtual int SetTargetSampleRate() { return kNotImplemented; }
|
||||
virtual int SetTargetSampleRate() OVERRIDE { return kNotImplemented; }
|
||||
|
||||
// Returns the error code for the last occurred error. If no error has
|
||||
// occurred, 0 is returned.
|
||||
virtual int LastError();
|
||||
virtual int LastError() OVERRIDE;
|
||||
|
||||
// Returns the error code last returned by a decoder (audio or comfort noise).
|
||||
// When LastError() returns kDecoderErrorCode or kComfortNoiseErrorCode, check
|
||||
// this method to get the decoder's error code.
|
||||
virtual int LastDecoderError();
|
||||
virtual int LastDecoderError() OVERRIDE;
|
||||
|
||||
// Flushes both the packet buffer and the sync buffer.
|
||||
virtual void FlushBuffers();
|
||||
virtual void FlushBuffers() OVERRIDE;
|
||||
|
||||
virtual void PacketBufferStatistics(int* current_num_packets,
|
||||
int* max_num_packets) const;
|
||||
int* max_num_packets) const OVERRIDE;
|
||||
|
||||
// Get sequence number and timestamp of the latest RTP.
|
||||
// This method is to facilitate NACK.
|
||||
virtual int DecodedRtpInfo(int* sequence_number, uint32_t* timestamp) const;
|
||||
virtual int DecodedRtpInfo(int* sequence_number,
|
||||
uint32_t* timestamp) const OVERRIDE;
|
||||
|
||||
// This accessor method is only intended for testing purposes.
|
||||
virtual const SyncBuffer* sync_buffer_for_test() const;
|
||||
const SyncBuffer* sync_buffer_for_test() const;
|
||||
|
||||
protected:
|
||||
static const int kOutputSizeMs = 10;
|
||||
|
@ -329,7 +329,6 @@
|
||||
'<@(audio_coding_defines)',
|
||||
],
|
||||
'sources': [
|
||||
'audio_coding/main/test/ACMTest.cc',
|
||||
'audio_coding/main/test/APITest.cc',
|
||||
'audio_coding/main/test/Channel.cc',
|
||||
'audio_coding/main/test/dual_stream_unittest.cc',
|
||||
|
@ -27,11 +27,11 @@ public:
|
||||
|
||||
int32_t SetEncodeCodec(
|
||||
const CodecInst& codecInst,
|
||||
ACMAMRPackingFormat amrFormat = AMRBandwidthEfficient);
|
||||
ACMAMRPackingFormat amrFormat = AMRBandwidthEfficient);
|
||||
|
||||
int32_t SetDecodeCodec(
|
||||
const CodecInst& codecInst,
|
||||
ACMAMRPackingFormat amrFormat = AMRBandwidthEfficient);
|
||||
ACMAMRPackingFormat amrFormat = AMRBandwidthEfficient);
|
||||
|
||||
int32_t Decode(AudioFrame& decodedAudio, uint32_t sampFreqHz,
|
||||
const int8_t* incomingPayload, int32_t payloadLength);
|
||||
@ -42,12 +42,13 @@ public:
|
||||
uint32_t& encodedLengthInBytes);
|
||||
|
||||
protected:
|
||||
virtual int32_t SendData(FrameType frameType,
|
||||
uint8_t payloadType,
|
||||
uint32_t timeStamp,
|
||||
const uint8_t* payloadData,
|
||||
uint16_t payloadSize,
|
||||
const RTPFragmentationHeader* fragmentation);
|
||||
virtual int32_t SendData(
|
||||
FrameType frameType,
|
||||
uint8_t payloadType,
|
||||
uint32_t timeStamp,
|
||||
const uint8_t* payloadData,
|
||||
uint16_t payloadSize,
|
||||
const RTPFragmentationHeader* fragmentation) OVERRIDE;
|
||||
|
||||
private:
|
||||
scoped_ptr<AudioCodingModule> _acm;
|
||||
|
Reference in New Issue
Block a user