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

Unified Diff: content/renderer/media/video_track_recorder_unittest.cc

Issue 1384483005: MediaStream Recorder: Support VP9 encoder (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sandersd@ comments Created 5 years, 2 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
« no previous file with comments | « content/renderer/media/video_track_recorder.cc ('k') | media/capture/webm_muxer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/video_track_recorder_unittest.cc
diff --git a/content/renderer/media/video_track_recorder_unittest.cc b/content/renderer/media/video_track_recorder_unittest.cc
index 791beb1f699bcf2831a1b28221c161c82810dea2..ddddf2bb13dbeaa7d4755e2b9dead16f1941f9ca 100644
--- a/content/renderer/media/video_track_recorder_unittest.cc
+++ b/content/renderer/media/video_track_recorder_unittest.cc
@@ -19,12 +19,16 @@
#include "third_party/WebKit/public/platform/WebString.h"
#include "third_party/WebKit/public/web/WebHeap.h"
+using media::VideoFrame;
+
using ::testing::_;
using ::testing::DoAll;
using ::testing::InSequence;
using ::testing::Mock;
using ::testing::Return;
using ::testing::SaveArg;
+using ::testing::TestWithParam;
+using ::testing::ValuesIn;
namespace content {
@@ -32,19 +36,17 @@ ACTION_P(RunClosure, closure) {
closure.Run();
}
-// Dummy interface class to be able to MOCK its methods.
-class EncodedVideoHandlerInterface {
- public:
- virtual void OnEncodedVideo(
- const scoped_refptr<media::VideoFrame>& video_frame,
- scoped_ptr<std::string> encoded_data,
- base::TimeTicks timestamp,
- bool is_key_frame) = 0;
- virtual ~EncodedVideoHandlerInterface() {}
+struct TrackRecorderTestParams {
+ const bool use_vp9;
+ const size_t first_encoded_frame_size;
+ const size_t second_encoded_frame_size;
+ const size_t third_encoded_frame_size;
};
-class VideoTrackRecorderTest : public testing::Test,
- public EncodedVideoHandlerInterface {
+const TrackRecorderTestParams kTrackRecorderTestParams[] = {{false, 52, 32, 57},
+ {true, 33, 18, 33}};
+
+class VideoTrackRecorderTest : public TestWithParam<TrackRecorderTestParams> {
public:
VideoTrackRecorderTest()
: mock_source_(new MockMediaStreamVideoSource(false)) {
@@ -63,10 +65,10 @@ class VideoTrackRecorderTest : public testing::Test,
blink_track_.setExtraData(track_);
video_track_recorder_.reset(new VideoTrackRecorder(
+ GetParam().use_vp9 /* use_vp9 */,
blink_track_,
base::Bind(&VideoTrackRecorderTest::OnEncodedVideo,
base::Unretained(this))));
-
// Paranoia checks.
EXPECT_EQ(blink_track_.source().extraData(), blink_source_.extraData());
EXPECT_TRUE(message_loop_.IsCurrent());
@@ -80,19 +82,18 @@ class VideoTrackRecorderTest : public testing::Test,
}
MOCK_METHOD4(DoOnEncodedVideo,
- void(const scoped_refptr<media::VideoFrame>& frame,
+ void(const scoped_refptr<VideoFrame>& frame,
std::string encoded_data,
base::TimeTicks timestamp,
bool keyframe));
- void OnEncodedVideo(
- const scoped_refptr<media::VideoFrame>& video_frame,
- scoped_ptr<std::string> encoded_data,
- base::TimeTicks timestamp,
- bool is_key_frame) override {
+ void OnEncodedVideo(const scoped_refptr<VideoFrame>& video_frame,
+ scoped_ptr<std::string> encoded_data,
+ base::TimeTicks timestamp,
+ bool is_key_frame) {
DoOnEncodedVideo(video_frame, *encoded_data, timestamp, is_key_frame);
}
- void Encode(const scoped_refptr<media::VideoFrame>& frame,
+ void Encode(const scoped_refptr<VideoFrame>& frame,
base::TimeTicks capture_time) {
EXPECT_TRUE(message_loop_.IsCurrent());
video_track_recorder_->OnVideoFrameForTesting(frame, capture_time);
@@ -118,16 +119,16 @@ class VideoTrackRecorderTest : public testing::Test,
// Construct and destruct all objects, in particular |video_track_recorder_| and
// its inner object(s). This is a non trivial sequence.
-TEST_F(VideoTrackRecorderTest, ConstructAndDestruct) {}
+TEST_P(VideoTrackRecorderTest, ConstructAndDestruct) {}
// Creates the encoder and encodes 2 frames of the same size; the encoder should
// be initialised and produce a keyframe, then a non-keyframe. Finally a frame
// of larger size is sent and is expected to be encoded as a keyframe.
-TEST_F(VideoTrackRecorderTest, VideoEncoding) {
+TEST_P(VideoTrackRecorderTest, VideoEncoding) {
// |frame_size| cannot be arbitrarily small, should be reasonable.
const gfx::Size frame_size(160, 80);
- const scoped_refptr<media::VideoFrame> video_frame =
- media::VideoFrame::CreateBlackFrame(frame_size);
+ const scoped_refptr<VideoFrame> video_frame =
+ VideoFrame::CreateBlackFrame(frame_size);
const double kFrameRate = 60.0f;
video_frame->metadata()->SetDouble(media::VideoFrameMetadata::FRAME_RATE,
kFrameRate);
@@ -150,8 +151,8 @@ TEST_F(VideoTrackRecorderTest, VideoEncoding) {
// Send another Video Frame and expect only an DoOnEncodedVideo() callback.
const gfx::Size frame_size2(180, 80);
- const scoped_refptr<media::VideoFrame> video_frame2 =
- media::VideoFrame::CreateBlackFrame(frame_size2);
+ const scoped_refptr<VideoFrame> video_frame2 =
+ VideoFrame::CreateBlackFrame(frame_size2);
base::RunLoop run_loop;
base::Closure quit_closure = run_loop.QuitClosure();
@@ -165,14 +166,18 @@ TEST_F(VideoTrackRecorderTest, VideoEncoding) {
run_loop.Run();
- const size_t kFirstEncodedDataSize = 52;
- EXPECT_EQ(first_frame_encoded_data.size(), kFirstEncodedDataSize);
- const size_t kSecondEncodedDataSize = 32;
- EXPECT_EQ(second_frame_encoded_data.size(), kSecondEncodedDataSize);
- const size_t kThirdEncodedDataSize = 57;
- EXPECT_EQ(third_frame_encoded_data.size(), kThirdEncodedDataSize);
+ EXPECT_EQ(GetParam().first_encoded_frame_size,
+ first_frame_encoded_data.size());
+ EXPECT_EQ(GetParam().second_encoded_frame_size,
+ second_frame_encoded_data.size());
+ EXPECT_EQ(GetParam().third_encoded_frame_size,
+ third_frame_encoded_data.size());
Mock::VerifyAndClearExpectations(this);
}
+INSTANTIATE_TEST_CASE_P(,
+ VideoTrackRecorderTest,
+ ValuesIn(kTrackRecorderTestParams));
+
} // namespace content
« no previous file with comments | « content/renderer/media/video_track_recorder.cc ('k') | media/capture/webm_muxer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698