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

Unified Diff: webrtc/modules/video_coding/frame_buffer2_unittest.cc

Issue 2642753002: Reland of Make the new jitter buffer the default jitter buffer. (Closed)
Patch Set: Rebase Created 3 years, 11 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/video_coding/frame_buffer2_unittest.cc
diff --git a/webrtc/modules/video_coding/frame_buffer2_unittest.cc b/webrtc/modules/video_coding/frame_buffer2_unittest.cc
index 96be01f83de075fe21ddcb750843a3c1ce9c2734..5c12e945936a63d10b1cc49f3089c245916eb11e 100644
--- a/webrtc/modules/video_coding/frame_buffer2_unittest.cc
+++ b/webrtc/modules/video_coding/frame_buffer2_unittest.cc
@@ -25,6 +25,9 @@
#include "webrtc/test/gmock.h"
#include "webrtc/test/gtest.h"
+using testing::_;
+using testing::Return;
+
namespace webrtc {
namespace video_coding {
@@ -54,6 +57,16 @@ class VCMTimingFake : public VCMTiming {
return std::max<int>(0, render_time_ms - now_ms - kDecodeTime);
}
+ bool GetTimings(int* decode_ms,
+ int* max_decode_ms,
+ int* current_delay_ms,
+ int* target_delay_ms,
+ int* jitter_buffer_ms,
+ int* min_playout_delay_ms,
+ int* render_delay_ms) const override {
+ return true;
+ }
+
private:
static constexpr int kDelayMs = 50;
static constexpr int kDecodeTime = kDelayMs / 2;
@@ -82,6 +95,27 @@ class FrameObjectFake : public FrameObject {
int64_t ReceivedTime() const override { return 0; }
int64_t RenderTime() const override { return _renderTimeMs; }
+
+ // In EncodedImage |_length| is used to descibe its size and |_size| to
+ // describe its capacity.
+ void SetSize(int size) { _length = size; }
+};
+
+class VCMReceiveStatisticsCallbackMock : public VCMReceiveStatisticsCallback {
+ public:
+ MOCK_METHOD2(OnReceiveRatesUpdated,
+ void(uint32_t bitRate, uint32_t frameRate));
+ MOCK_METHOD2(OnCompleteFrame, void(bool is_keyframe, size_t size_bytes));
+ MOCK_METHOD1(OnDiscardedPacketsUpdated, void(int discarded_packets));
+ MOCK_METHOD1(OnFrameCountsUpdated, void(const FrameCounts& frame_counts));
+ MOCK_METHOD7(OnFrameBufferTimingsUpdated,
+ void(int decode_ms,
+ int max_decode_ms,
+ int current_delay_ms,
+ int target_delay_ms,
+ int jitter_buffer_ms,
+ int min_playout_delay_ms,
+ int render_delay_ms));
};
class TestFrameBuffer2 : public ::testing::Test {
@@ -95,7 +129,7 @@ class TestFrameBuffer2 : public ::testing::Test {
: clock_(0),
timing_(&clock_),
jitter_estimator_(&clock_),
- buffer_(&clock_, &jitter_estimator_, &timing_),
+ buffer_(&clock_, &jitter_estimator_, &timing_, &stats_callback_),
rand_(0x34678213),
tear_down_(false),
extract_thread_(&ExtractLoop, this, "Extract Thread"),
@@ -190,6 +224,7 @@ class TestFrameBuffer2 : public ::testing::Test {
FrameBuffer buffer_;
std::vector<std::unique_ptr<FrameObject>> frames_;
Random rand_;
+ ::testing::NiceMock<VCMReceiveStatisticsCallbackMock> stats_callback_;
int64_t max_wait_time_;
bool tear_down_;
@@ -436,5 +471,30 @@ TEST_F(TestFrameBuffer2, PictureIdJumpBack) {
CheckNoFrame(2);
}
+TEST_F(TestFrameBuffer2, StatsCallback) {
+ uint16_t pid = Rand();
+ uint32_t ts = Rand();
+ const int kFrameSize = 5000;
+
+ EXPECT_CALL(stats_callback_, OnCompleteFrame(true, kFrameSize));
+ EXPECT_CALL(stats_callback_,
+ OnFrameBufferTimingsUpdated(_, _, _, _, _, _, _));
+
+ {
+ std::unique_ptr<FrameObjectFake> frame(new FrameObjectFake());
+ frame->SetSize(kFrameSize);
+ frame->picture_id = pid;
+ frame->spatial_layer = 0;
+ frame->timestamp = ts;
+ frame->num_references = 0;
+ frame->inter_layer_predicted = false;
+
+ EXPECT_EQ(buffer_.InsertFrame(std::move(frame)), pid);
+ }
+
+ ExtractFrame();
+ CheckFrame(0, pid, 0);
+}
+
} // namespace video_coding
} // namespace webrtc
« no previous file with comments | « webrtc/modules/video_coding/frame_buffer2.cc ('k') | webrtc/modules/video_coding/include/video_coding_defines.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698