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

Unified Diff: content/renderer/media_recorder/media_recorder_handler_unittest.cc

Issue 2691373005: Support alpha channel recording for VPX in MediaRecorder (Closed)
Patch Set: Created 3 years, 9 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: content/renderer/media_recorder/media_recorder_handler_unittest.cc
diff --git a/content/renderer/media_recorder/media_recorder_handler_unittest.cc b/content/renderer/media_recorder/media_recorder_handler_unittest.cc
index f0be4d10e392bb3c23533c8692cea8d78dd2768f..e591eb340b874ef6805490db65615d44826c1409 100644
--- a/content/renderer/media_recorder/media_recorder_handler_unittest.cc
+++ b/content/renderer/media_recorder/media_recorder_handler_unittest.cc
@@ -55,17 +55,18 @@ struct MediaRecorderTestParams {
const bool has_audio;
const char* const mime_type;
const char* const codecs;
+ const bool handles_alpha;
mcasas 2017/03/08 22:38:48 Since this test encompasses both encoder and muxer
emircan 2017/03/09 01:45:40 Done.
};
// Array of valid combinations of video/audio/codecs and expected collected
// encoded sizes to use for parameterizing MediaRecorderHandlerTest.
static const MediaRecorderTestParams kMediaRecorderTestParams[] = {
- {true, false, "video/webm", "vp8"},
- {true, false, "video/webm", "vp9"},
+ {true, false, "video/webm", "vp8", true},
+ {true, false, "video/webm", "vp9", true},
#if BUILDFLAG(RTC_USE_H264)
- {true, false, "video/webm", "h264"},
+ {true, false, "video/webm", "h264", false},
#endif
- {false, true, "video/webm", "vp8"}};
+ {false, true, "video/webm", "vp8", true}};
class MediaRecorderHandlerTest : public TestWithParam<MediaRecorderTestParams>,
public blink::WebMediaRecorderHandlerClient {
@@ -217,7 +218,8 @@ TEST_P(MediaRecorderHandlerTest, InitializeStartStop) {
media_recorder_handler_.reset();
}
-// Sends 2 frames and expect them as WebM contained encoded data in writeData().
+// Sends 2 opaque frames and 1 transparent frame and expects them as WebM
+// contained encoded data in writeData().
TEST_P(MediaRecorderHandlerTest, EncodeVideoFrames) {
// Video-only test.
if (GetParam().has_audio)
@@ -267,6 +269,32 @@ TEST_P(MediaRecorderHandlerTest, EncodeVideoFrames) {
OnVideoFrameForTesting(video_frame);
run_loop.Run();
}
+ Mock::VerifyAndClearExpectations(this);
+
+ {
+ const scoped_refptr<media::VideoFrame> alpha_frame =
+ media::VideoFrame::CreateTransparentFrame(gfx::Size(160, 80));
+ const size_t kEncodedSizeThreshold = 16;
mcasas 2017/03/08 22:38:48 nit: can we add here just to make super sure and f
emircan 2017/03/09 01:45:40 Done.
+ base::RunLoop run_loop;
+ base::Closure quit_closure = run_loop.QuitClosure();
+ // The second time around writeData() is called a number of times to write
+ // the WebM frame header, and then is pinged with the encoded data.
+ EXPECT_CALL(*this, writeData(_, Lt(kEncodedSizeThreshold), _, _))
+ .Times(AtLeast(1));
+ EXPECT_CALL(*this, writeData(_, Gt(kEncodedSizeThreshold), _, _))
+ .Times(1)
+ .WillOnce(RunClosure(quit_closure));
+ if (GetParam().handles_alpha) {
+ EXPECT_CALL(*this, writeData(_, Lt(kEncodedSizeThreshold), _, _))
+ .Times(AtLeast(1));
+ EXPECT_CALL(*this, writeData(_, Gt(kEncodedSizeThreshold), _, _))
+ .Times(1)
+ .WillOnce(RunClosure(quit_closure));
+ }
+
+ OnVideoFrameForTesting(alpha_frame);
+ run_loop.Run();
+ }
media_recorder_handler_->stop();

Powered by Google App Engine
This is Rietveld 408576698