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

Unified Diff: content/renderer/media/gpu/rtc_video_decoder_unittest.cc

Issue 2832863002: Merge 59: Handle multiple textures per buffer in RTCVideoDecoder (Closed)
Patch Set: Created 3 years, 8 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/gpu/rtc_video_decoder.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/gpu/rtc_video_decoder_unittest.cc
diff --git a/content/renderer/media/gpu/rtc_video_decoder_unittest.cc b/content/renderer/media/gpu/rtc_video_decoder_unittest.cc
index 1aec6f3c54b4f47feff840ce83b5b92052c749f0..ea476be262a0eaab9f7e3e1f4dcba430186c0935 100644
--- a/content/renderer/media/gpu/rtc_video_decoder_unittest.cc
+++ b/content/renderer/media/gpu/rtc_video_decoder_unittest.cc
@@ -141,6 +141,29 @@ class RTCVideoDecoderTest
idle_waiter_.Wait();
}
+ bool CreateMockTextures(int32_t count,
+ const gfx::Size& size,
+ std::vector<uint32_t>* texture_ids,
+ std::vector<gpu::Mailbox>* texture_mailboxes,
+ uint32_t texture_target) {
+ texture_ids->resize(count, 0);
+ texture_mailboxes->resize(count, gpu::Mailbox());
+ return true;
+ }
+
+ void ProvidePictureBuffers(uint32_t buffer_count,
+ media::VideoPixelFormat format,
+ uint32_t textures_per_buffer,
+ const gfx::Size& size,
+ uint32_t texture_target) {
+ vda_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&RTCVideoDecoder::ProvidePictureBuffers,
+ base::Unretained(rtc_decoder_.get()), buffer_count, format,
+ textures_per_buffer, size, texture_target));
+ RunUntilIdle();
+ }
+
void SetUpResetVDA() {
mock_vda_after_reset_ = new media::MockVideoDecodeAccelerator;
EXPECT_CALL(*mock_gpu_factories_.get(), DoCreateVideoDecodeAccelerator())
@@ -276,6 +299,28 @@ TEST_F(RTCVideoDecoderTest, IsFirstBufferAfterReset) {
rtc_decoder_->IsFirstBufferAfterReset(1, RTCVideoDecoder::ID_LAST));
}
+TEST_F(RTCVideoDecoderTest, MultipleTexturesPerBuffer) {
+ CreateDecoder(webrtc::kVideoCodecVP8);
+ const uint32_t kBufferCount = 5;
+ const uint32_t kTexturesPerBuffer = 3;
+ const gfx::Size kSize(48, 48);
+
+ EXPECT_CALL(*mock_gpu_factories_.get(), CreateTextures(_, _, _, _, _))
+ .WillRepeatedly(Invoke(this, &RTCVideoDecoderTest::CreateMockTextures));
+ EXPECT_CALL(*mock_gpu_factories_.get(), DeleteTexture(_))
+ .Times(kBufferCount * kTexturesPerBuffer);
+
+ std::vector<media::PictureBuffer> pbs;
+ EXPECT_CALL(*mock_vda_, AssignPictureBuffers(_)).WillOnce(SaveArg<0>(&pbs));
+ ProvidePictureBuffers(kBufferCount, media::PIXEL_FORMAT_UNKNOWN,
+ kTexturesPerBuffer, kSize, 0);
+ EXPECT_EQ(kBufferCount, pbs.size());
+ for (const auto pb : pbs) {
+ EXPECT_EQ(kSize, pb.size());
+ EXPECT_EQ(kTexturesPerBuffer, pb.client_texture_ids().size());
+ }
+}
+
// Tests/Verifies that |rtc_encoder_| drops incoming frames and its error
// counter is increased when in an error condition.
TEST_P(RTCVideoDecoderTest, GetVDAErrorCounterForTesting) {
« no previous file with comments | « content/renderer/media/gpu/rtc_video_decoder.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698