Index: ppapi/tests/test_video_encoder.cc |
diff --git a/ppapi/tests/test_video_encoder.cc b/ppapi/tests/test_video_encoder.cc |
index b4907cc9773ec535b5a974e3f0ffd8142e6e908f..4b2abf2a7764915f3bfaddae6e8ebb5237e9cd5f 100644 |
--- a/ppapi/tests/test_video_encoder.cc |
+++ b/ppapi/tests/test_video_encoder.cc |
@@ -18,89 +18,98 @@ bool TestVideoEncoder::Init() { |
} |
void TestVideoEncoder::RunTests(const std::string& filter) { |
- RUN_CALLBACK_TEST(TestVideoEncoder, Create, filter); |
+ RUN_CALLBACK_TEST(TestVideoEncoder, AvailableCodecs, filter); |
+ RUN_CALLBACK_TEST(TestVideoEncoder, IncorrectSizeFails, filter); |
+ RUN_CALLBACK_TEST(TestVideoEncoder, InitializeVP8, filter); |
+ RUN_CALLBACK_TEST(TestVideoEncoder, InitializeVP9, filter); |
} |
-std::string TestVideoEncoder::TestCreate() { |
+std::string TestVideoEncoder::TestAvailableCodecs() { |
// Test that we get results for supported formats. We should at |
// least get the software supported formats. |
- { |
- pp::VideoEncoder video_encoder(instance_); |
- ASSERT_FALSE(video_encoder.is_null()); |
- |
- TestCompletionCallbackWithOutput<std::vector<PP_VideoProfileDescription> > |
- callback(instance_->pp_instance(), false); |
- callback.WaitForResult( |
- video_encoder.GetSupportedProfiles(callback.GetCallback())); |
- |
- ASSERT_GE(callback.result(), 1U); |
- |
- const std::vector<PP_VideoProfileDescription> video_profiles = |
- callback.output(); |
- ASSERT_GE(video_profiles.size(), 1U); |
- |
- bool found_vp8 = false; |
- for (uint32_t i = 0; i < video_profiles.size(); ++i) { |
- const PP_VideoProfileDescription& description = video_profiles[i]; |
- if (description.profile == PP_VIDEOPROFILE_VP8_ANY && |
- description.hardware_accelerated == PP_FALSE) { |
- ASSERT_GE(description.max_framerate_numerator / |
- description.max_framerate_denominator, |
- 30U); |
+ pp::VideoEncoder video_encoder(instance_); |
+ ASSERT_FALSE(video_encoder.is_null()); |
+ |
+ TestCompletionCallbackWithOutput<std::vector<PP_VideoProfileDescription> > |
+ callback(instance_->pp_instance(), false); |
+ callback.WaitForResult( |
+ video_encoder.GetSupportedProfiles(callback.GetCallback())); |
+ |
+ ASSERT_GE(callback.result(), 1U); |
+ |
+ const std::vector<PP_VideoProfileDescription> video_profiles = |
+ callback.output(); |
+ ASSERT_GE(video_profiles.size(), 1U); |
+ |
+ bool found_vp8 = false, found_vp9 = false; |
+ for (uint32_t i = 0; i < video_profiles.size(); ++i) { |
+ const PP_VideoProfileDescription& description = video_profiles[i]; |
+ if (description.hardware_accelerated == PP_FALSE) { |
+ ASSERT_GE(description.max_framerate_numerator / |
+ description.max_framerate_denominator, |
+ 30U); |
+ if (description.profile == PP_VIDEOPROFILE_VP8_ANY) |
found_vp8 = true; |
- } |
+ else if (description.profile == PP_VIDEOPROFILE_VP9_ANY) |
+ found_vp9 = true; |
} |
- ASSERT_TRUE(found_vp8); |
} |
+ ASSERT_TRUE(found_vp8); |
+ ASSERT_TRUE(found_vp9); |
+ |
+ PASS(); |
+} |
+ |
+std::string TestVideoEncoder::TestIncorrectSizeFails() { |
// Test that initializing the encoder with incorrect size fails. |
- { |
- pp::VideoEncoder video_encoder(instance_); |
- ASSERT_FALSE(video_encoder.is_null()); |
- pp::Size video_size(0, 0); |
- |
- TestCompletionCallback callback(instance_->pp_instance(), false); |
- callback.WaitForResult( |
- video_encoder.Initialize(PP_VIDEOFRAME_FORMAT_I420, |
- video_size, |
- PP_VIDEOPROFILE_VP8_ANY, |
- 1000000, |
- PP_HARDWAREACCELERATION_WITHFALLBACK, |
- callback.GetCallback())); |
- |
- ASSERT_EQ(PP_ERROR_BADARGUMENT, callback.result()); |
- } |
- // Test that initializing the encoder with software VP8 succeeds. |
- { |
- pp::VideoEncoder video_encoder(instance_); |
- ASSERT_FALSE(video_encoder.is_null()); |
- pp::Size video_size(640, 480); |
- |
- TestCompletionCallback callback(instance_->pp_instance(), false); |
- callback.WaitForResult( |
- video_encoder.Initialize(PP_VIDEOFRAME_FORMAT_I420, |
- video_size, |
- PP_VIDEOPROFILE_VP8_ANY, |
- 1000000, |
- PP_HARDWAREACCELERATION_WITHFALLBACK, |
- callback.GetCallback())); |
- |
- ASSERT_EQ(PP_OK, callback.result()); |
- |
- pp::Size coded_size; |
- ASSERT_EQ(PP_OK, video_encoder.GetFrameCodedSize(&coded_size)); |
- ASSERT_GE(coded_size.GetArea(), video_size.GetArea()); |
- ASSERT_GE(video_encoder.GetFramesRequired(), 1); |
- |
- TestCompletionCallbackWithOutput<pp::VideoFrame> get_video_frame( |
- instance_->pp_instance(), false); |
- get_video_frame.WaitForResult( |
- video_encoder.GetVideoFrame(get_video_frame.GetCallback())); |
- ASSERT_EQ(PP_OK, get_video_frame.result()); |
- |
- pp::Size video_frame_size; |
- ASSERT_TRUE(get_video_frame.output().GetSize(&video_frame_size)); |
- ASSERT_EQ(coded_size.GetArea(), video_frame_size.GetArea()); |
- } |
+ pp::VideoEncoder video_encoder(instance_); |
+ ASSERT_FALSE(video_encoder.is_null()); |
+ pp::Size video_size(0, 0); |
+ |
+ TestCompletionCallback callback(instance_->pp_instance(), false); |
+ callback.WaitForResult(video_encoder.Initialize( |
+ PP_VIDEOFRAME_FORMAT_I420, video_size, PP_VIDEOPROFILE_VP8_ANY, 1000000, |
+ PP_HARDWAREACCELERATION_WITHFALLBACK, callback.GetCallback())); |
+ |
+ ASSERT_EQ(PP_ERROR_BADARGUMENT, callback.result()); |
+ |
+ PASS(); |
+} |
+ |
+std::string TestVideoEncoder::TestInitializeVP8() { |
+ return TestInitializeCodec(PP_VIDEOPROFILE_VP8_ANY); |
+} |
+ |
+std::string TestVideoEncoder::TestInitializeVP9() { |
+ return TestInitializeCodec(PP_VIDEOPROFILE_VP9_ANY); |
+} |
+ |
+std::string TestVideoEncoder::TestInitializeCodec(PP_VideoProfile profile) { |
+ pp::VideoEncoder video_encoder(instance_); |
+ ASSERT_FALSE(video_encoder.is_null()); |
+ pp::Size video_size(640, 480); |
+ |
+ TestCompletionCallback callback(instance_->pp_instance(), false); |
+ callback.WaitForResult(video_encoder.Initialize( |
+ PP_VIDEOFRAME_FORMAT_I420, video_size, profile, 1000000, |
+ PP_HARDWAREACCELERATION_WITHFALLBACK, callback.GetCallback())); |
+ |
+ ASSERT_EQ(PP_OK, callback.result()); |
+ |
+ pp::Size coded_size; |
+ ASSERT_EQ(PP_OK, video_encoder.GetFrameCodedSize(&coded_size)); |
+ ASSERT_GE(coded_size.GetArea(), video_size.GetArea()); |
+ ASSERT_GE(video_encoder.GetFramesRequired(), 1); |
+ |
+ TestCompletionCallbackWithOutput<pp::VideoFrame> get_video_frame( |
+ instance_->pp_instance(), false); |
+ get_video_frame.WaitForResult( |
+ video_encoder.GetVideoFrame(get_video_frame.GetCallback())); |
+ ASSERT_EQ(PP_OK, get_video_frame.result()); |
+ |
+ pp::Size video_frame_size; |
+ ASSERT_TRUE(get_video_frame.output().GetSize(&video_frame_size)); |
+ ASSERT_EQ(coded_size.GetArea(), video_frame_size.GetArea()); |
PASS(); |
} |