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

Side by Side Diff: content/renderer/media/media_stream_video_renderer_sink_unittest.cc

Issue 1407703003: Reland: Use GpuMemoryBufferVideoFramePool for WebMediaPlayerMS and MediaStreamVideoRendererSink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/run_loop.h" 6 #include "base/run_loop.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "content/child/child_process.h" 8 #include "content/child/child_process.h"
9 #include "content/renderer/media/media_stream_video_renderer_sink.h" 9 #include "content/renderer/media/media_stream_video_renderer_sink.h"
10 #include "content/renderer/media/mock_media_stream_registry.h" 10 #include "content/renderer/media/mock_media_stream_registry.h"
11 #include "media/base/video_frame.h" 11 #include "media/base/video_frame.h"
12 #include "media/renderers/gpu_video_accelerator_factories.h"
13 #include "media/renderers/mock_gpu_memory_buffer_video_frame_pool.h"
12 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gmock/include/gmock/gmock.h"
13 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
14 #include "third_party/WebKit/public/platform/WebString.h" 16 #include "third_party/WebKit/public/platform/WebString.h"
15 #include "third_party/WebKit/public/web/WebHeap.h" 17 #include "third_party/WebKit/public/web/WebHeap.h"
16 18
17 using ::testing::_; 19 using ::testing::_;
18 using ::testing::AtLeast; 20 using ::testing::AtLeast;
19 using ::testing::InSequence; 21 using ::testing::InSequence;
20 using ::testing::Lt; 22 using ::testing::Lt;
21 using ::testing::Mock; 23 using ::testing::Mock;
(...skipping 16 matching lines...) Expand all
38 // Extract the Blink Video Track for the MSVRSink. 40 // Extract the Blink Video Track for the MSVRSink.
39 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 41 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
40 registry_.test_stream().videoTracks(video_tracks); 42 registry_.test_stream().videoTracks(video_tracks);
41 EXPECT_EQ(1u, video_tracks.size()); 43 EXPECT_EQ(1u, video_tracks.size());
42 44
43 media_stream_video_renderer_sink_ = new MediaStreamVideoRendererSink( 45 media_stream_video_renderer_sink_ = new MediaStreamVideoRendererSink(
44 video_tracks[0], 46 video_tracks[0],
45 base::Bind(&MediaStreamVideoRendererSinkTest::ErrorCallback, 47 base::Bind(&MediaStreamVideoRendererSinkTest::ErrorCallback,
46 base::Unretained(this)), 48 base::Unretained(this)),
47 base::Bind(&MediaStreamVideoRendererSinkTest::RepaintCallback, 49 base::Bind(&MediaStreamVideoRendererSinkTest::RepaintCallback,
48 base::Unretained(this))); 50 base::Unretained(this)),
51 message_loop_.task_runner(), message_loop_.task_runner().get(),
52 nullptr /* gpu_factories */);
49 53
50 EXPECT_TRUE(IsInStoppedState()); 54 EXPECT_TRUE(IsInStoppedState());
51 } 55 }
52 56
53 ~MediaStreamVideoRendererSinkTest() { 57 ~MediaStreamVideoRendererSinkTest() {
54 media_stream_video_renderer_sink_ = nullptr; 58 media_stream_video_renderer_sink_ = nullptr;
55 registry_.reset(); 59 registry_.reset();
56 blink::WebHeap::collectAllGarbageForTesting(); 60 blink::WebHeap::collectAllGarbageForTesting();
57 } 61 }
58 62
(...skipping 15 matching lines...) Expand all
74 78
75 void OnVideoFrame(const scoped_refptr<media::VideoFrame>& frame) { 79 void OnVideoFrame(const scoped_refptr<media::VideoFrame>& frame) {
76 media_stream_video_renderer_sink_->OnVideoFrame(frame, 80 media_stream_video_renderer_sink_->OnVideoFrame(frame,
77 base::TimeTicks::Now()); 81 base::TimeTicks::Now());
78 } 82 }
79 83
80 scoped_refptr<MediaStreamVideoRendererSink> media_stream_video_renderer_sink_; 84 scoped_refptr<MediaStreamVideoRendererSink> media_stream_video_renderer_sink_;
81 85
82 // A ChildProcess and a MessageLoopForUI are both needed to fool the Tracks 86 // A ChildProcess and a MessageLoopForUI are both needed to fool the Tracks
83 // and Sources in |registry_| into believing they are on the right threads. 87 // and Sources in |registry_| into believing they are on the right threads.
84 const base::MessageLoopForUI message_loop_; 88 base::MessageLoopForUI message_loop_;
85 const ChildProcess child_process_; 89 const ChildProcess child_process_;
86 MockMediaStreamRegistry registry_; 90 MockMediaStreamRegistry registry_;
87 91
88 private: 92 private:
89 DISALLOW_COPY_AND_ASSIGN(MediaStreamVideoRendererSinkTest); 93 DISALLOW_COPY_AND_ASSIGN(MediaStreamVideoRendererSinkTest);
90 }; 94 };
91 95
92 // Checks that the initialization-destruction sequence works fine. 96 // Checks that the initialization-destruction sequence works fine.
93 TEST_F(MediaStreamVideoRendererSinkTest, StartStop) { 97 TEST_F(MediaStreamVideoRendererSinkTest, StartStop) {
94 EXPECT_TRUE(IsInStoppedState()); 98 EXPECT_TRUE(IsInStoppedState());
(...skipping 18 matching lines...) Expand all
113 InSequence s; 117 InSequence s;
114 const scoped_refptr<media::VideoFrame> video_frame = 118 const scoped_refptr<media::VideoFrame> video_frame =
115 media::VideoFrame::CreateBlackFrame(gfx::Size(160, 80)); 119 media::VideoFrame::CreateBlackFrame(gfx::Size(160, 80));
116 120
117 EXPECT_CALL(*this, RepaintCallback(video_frame)).Times(1); 121 EXPECT_CALL(*this, RepaintCallback(video_frame)).Times(1);
118 OnVideoFrame(video_frame); 122 OnVideoFrame(video_frame);
119 123
120 media_stream_video_renderer_sink_->Stop(); 124 media_stream_video_renderer_sink_->Stop();
121 } 125 }
122 126
127 class MediaStreamVideoRendererSinkAsyncAddFrameReadyTest
128 : public MediaStreamVideoRendererSinkTest {
129 public:
130 MediaStreamVideoRendererSinkAsyncAddFrameReadyTest() {
131 scoped_ptr<media::GpuMemoryBufferVideoFramePool> gpu_memory_buffer_pool(
132 new media::MockGpuMemoryBufferVideoFramePool(&frame_ready_cbs_));
133 media_stream_video_renderer_sink_->SetGpuMemoryBufferVideoForTesting(
134 gpu_memory_buffer_pool.Pass());
135 }
136
137 protected:
138 std::vector<base::Closure> frame_ready_cbs_;
139 };
140
141 TEST_F(MediaStreamVideoRendererSinkAsyncAddFrameReadyTest,
142 CreateHardwareFrames) {
143 media_stream_video_renderer_sink_->Start();
144
145 InSequence s;
146 const scoped_refptr<media::VideoFrame> video_frame =
147 media::VideoFrame::CreateBlackFrame(gfx::Size(160, 80));
148 OnVideoFrame(video_frame);
149 message_loop_.RunUntilIdle();
150 ASSERT_EQ(1u, frame_ready_cbs_.size());
151
152 EXPECT_CALL(*this, RepaintCallback(video_frame)).Times(1);
153 frame_ready_cbs_[0].Run();
154 message_loop_.RunUntilIdle();
155
156 media_stream_video_renderer_sink_->Stop();
157 }
158
123 } // namespace content 159 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/media_stream_video_renderer_sink.cc ('k') | content/renderer/media/webmediaplayer_ms.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698