Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Unified Diff: webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h

Issue 1725143003: Changed AudioEncoder::Encode to take an rtc::Buffer* instead of uint8_t* and a maximum size. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Added more fixes for override hiding in AudioEncoder implementations. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h
diff --git a/webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h b/webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h
index 66adde4be159c3af8fd0b404d09f80e8cc95c021..09cd07895330b15f7efc4f1a7bd57bcb5332cc59 100644
--- a/webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h
+++ b/webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h
@@ -11,15 +11,16 @@
#ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_MOCK_MOCK_AUDIO_ENCODER_H_
#define WEBRTC_MODULES_AUDIO_CODING_CODECS_MOCK_MOCK_AUDIO_ENCODER_H_
+#include "webrtc/base/array_view.h"
#include "webrtc/modules/audio_coding/codecs/audio_encoder.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace webrtc {
-class MockAudioEncoder final : public AudioEncoder {
+class MockAudioEncoderBase : public AudioEncoder {
public:
- ~MockAudioEncoder() override { Die(); }
+ ~MockAudioEncoderBase() override { Die(); }
MOCK_METHOD0(Die, void());
MOCK_METHOD1(Mark, void(std::string desc));
MOCK_CONST_METHOD0(MaxEncodedBytes, size_t());
@@ -29,12 +30,6 @@ class MockAudioEncoder final : public AudioEncoder {
MOCK_CONST_METHOD0(Num10MsFramesInNextPacket, size_t());
MOCK_CONST_METHOD0(Max10MsFramesInAPacket, size_t());
MOCK_CONST_METHOD0(GetTargetBitrate, int());
- // Note, we explicitly chose not to create a mock for the Encode method.
- MOCK_METHOD4(EncodeInternal,
- EncodedInfo(uint32_t timestamp,
- rtc::ArrayView<const int16_t> audio,
- size_t max_encoded_bytes,
- uint8_t* encoded));
MOCK_METHOD0(Reset, void());
MOCK_METHOD1(SetFec, bool(bool enable));
MOCK_METHOD1(SetDtx, bool(bool enable));
@@ -46,6 +41,90 @@ class MockAudioEncoder final : public AudioEncoder {
MOCK_METHOD1(SetMaxPayloadSize, void(int max_payload_size_bytes));
};
+class MockAudioEncoder final : public MockAudioEncoderBase {
+ public:
+ using AudioEncoder::EncodeInternal;
+
+ // Note, we explicitly chose not to create a mock for the Encode method.
+ MOCK_METHOD3(EncodeInternal,
+ EncodedInfo(uint32_t timestamp,
+ rtc::ArrayView<const int16_t> audio,
+ rtc::Buffer* encoded));
+
+ class FakeEncoding {
+ public:
+ // Creates a functor that will return |info| and adjust the rtc::Buffer
+ // given as input to it, so it is info.encoded_bytes larger.
+ FakeEncoding(const AudioEncoder::EncodedInfo& info);
+
+ // Shorthand version of the constructor above, for when only setting
+ // encoded_bytes in the EncodedInfo object matters.
+ FakeEncoding(size_t encoded_bytes);
+
+ AudioEncoder::EncodedInfo operator()(uint32_t timestamp,
+ rtc::ArrayView<const int16_t> audio,
+ rtc::Buffer* encoded);
+
+ private:
+ AudioEncoder::EncodedInfo info_;
+ };
+
+ class CopyEncoding {
+ public:
+ // Creates a functor that will return |info| and append the data in the
+ // payload to the buffer given as input to it. Up to info.encoded_bytes are
+ // appended - make sure the payload is big enough! Since it uses an
+ // ArrayView, it _does not_ copy the payload. Make sure it doesn't fall out
+ // of scope!
+ CopyEncoding(AudioEncoder::EncodedInfo info,
+ rtc::ArrayView<const uint8_t> payload);
+
+ // Shorthand version of the constructor above, for when you wish to append
+ // the whole payload and do not care about any EncodedInfo attribute other
+ // than encoded_bytes.
+ CopyEncoding(rtc::ArrayView<const uint8_t> payload);
+
+ AudioEncoder::EncodedInfo operator()(uint32_t timestamp,
+ rtc::ArrayView<const int16_t> audio,
+ rtc::Buffer* encoded);
+ private:
+ AudioEncoder::EncodedInfo info_;
+ rtc::ArrayView<const uint8_t> payload_;
+ };
+
+};
+
+class MockAudioEncoderDeprecated final : public MockAudioEncoderBase {
+ public:
+ using AudioEncoder::EncodeInternal;
+
+ // Note, we explicitly chose not to create a mock for the Encode method.
+ MOCK_METHOD4(EncodeInternal,
+ EncodedInfo(uint32_t timestamp,
+ rtc::ArrayView<const int16_t> audio,
+ size_t max_encoded_bytes,
+ uint8_t* encoded));
+
+ // A functor like MockAudioEncoder::CopyEncoding above, but which has the
+ // deprecated Encode signature. Currently only used in one test and should be
+ // removed once that backwards compatibility is.
+ class CopyEncoding {
+ public:
+ CopyEncoding(AudioEncoder::EncodedInfo info,
+ rtc::ArrayView<const uint8_t> payload);
+
+ CopyEncoding(rtc::ArrayView<const uint8_t> payload);
+
+ AudioEncoder::EncodedInfo operator()(uint32_t timestamp,
+ rtc::ArrayView<const int16_t> audio,
+ size_t max_bytes_encoded,
+ uint8_t* encoded);
+ private:
+ AudioEncoder::EncodedInfo info_;
+ rtc::ArrayView<const uint8_t> payload_;
+ };
+};
+
} // namespace webrtc
#endif // WEBRTC_MODULES_AUDIO_CODING_CODECS_MOCK_MOCK_AUDIO_ENCODER_H_

Powered by Google App Engine
This is Rietveld 408576698