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..775ec457cd2c5b09f95c83ee7b41aa933f5ad09e 100644 |
--- a/webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h |
+++ b/webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h |
@@ -1,5 +1,5 @@ |
/* |
- * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. |
+ * Copyright (c) 2016 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 |
@@ -11,15 +11,18 @@ |
#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" |
+#include <functional> |
+ |
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 +32,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 +43,76 @@ class MockAudioEncoder final : public AudioEncoder { |
MOCK_METHOD1(SetMaxPayloadSize, void(int max_payload_size_bytes)); |
}; |
+class MockAudioEncoder final : public MockAudioEncoderBase { |
+ public: |
+ // 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 MockAudioEncoderDeprecated final : public MockAudioEncoderBase { |
+ public: |
+ // 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)); |
+}; |
+ |
+// Contains helper functions for mocking AudioEncoder::Encode calls. There are |
+// checks in place, for example in AudioEncoder::Encode, that ensure the |
+// rtc::Buffer provided grows as many bytes as the EncodeInternal implementation |
+// claims it has written. These functions make sure to grow the Buffer |
+// appropriately. |
+namespace MockAudioEncoderHelper { |
kwiberg-webrtc
2016/02/27 19:21:46
Why a namespace? And if you do end up having one a
ossu
2016/02/29 08:51:24
Namespace because it's no longer a class. The name
|
+using EncodeFunction = |
+ std::function<AudioEncoder::EncodedInfo(uint32_t timestamp, |
kwiberg-webrtc
2016/02/27 19:21:46
Bad news: std::function is not yet allowed. https:
ossu
2016/02/29 08:51:24
Awww, daaang. :/
Well, I'll see what I can do. Not
|
+ rtc::ArrayView<const int16_t> audio, |
+ rtc::Buffer* encoded)>; |
+ |
+using DeprecatedEncodeFunction = |
+ std::function<AudioEncoder::EncodedInfo(uint32_t timestamp, |
+ rtc::ArrayView<const int16_t> audio, |
+ size_t max_bytes_encoded, |
+ uint8_t* encoded)>; |
+ |
+// Returns a function that will return |info| and adjust the rtc::Buffer |
+// given as input to it, so it is info.encoded_bytes larger. |
+EncodeFunction FakeEncoding(AudioEncoder::EncodedInfo info); |
+ |
+// Shorthand version of the function above, for when only setting encoded_bytes |
+// in the EncodedInfo object matters. |
+EncodeFunction FakeEncoding(size_t encoded_bytes); |
+ |
+// Returns a function 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! |
+ |
+EncodeFunction CopyEncoding(AudioEncoder::EncodedInfo info, |
+ rtc::ArrayView<const uint8_t> payload); |
+ |
+// Shorthand version of the function above, for when you wish to append the |
+// whole payload and do not care about any EncodedInfo attribute other than |
+// encoded_bytes. |
+EncodeFunction CopyEncoding(rtc::ArrayView<const uint8_t> payload); |
+ |
+// Returns a function like CopyEncoding above, but which has the deprecated |
+// Encode signature. Currently only used in one test and should be removed |
+// once that backwards compatibility is. |
+DeprecatedEncodeFunction DEPRECATED_CopyEncoding( |
+ AudioEncoder::EncodedInfo info, |
+ rtc::ArrayView<const uint8_t> payload); |
+ |
+DeprecatedEncodeFunction DEPRECATED_CopyEncoding( |
+ rtc::ArrayView<const uint8_t> payload); |
+ |
+} // namespace MockAudioEncoderHelper |
+ |
} // namespace webrtc |
#endif // WEBRTC_MODULES_AUDIO_CODING_CODECS_MOCK_MOCK_AUDIO_ENCODER_H_ |