OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chromecast/media/cma/base/demuxer_stream_adapter.h" |
| 6 |
5 #include <list> | 7 #include <list> |
| 8 #include <memory> |
6 | 9 |
7 #include "base/bind.h" | 10 #include "base/bind.h" |
8 #include "base/macros.h" | 11 #include "base/macros.h" |
9 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
10 #include "base/memory/scoped_ptr.h" | |
11 #include "base/thread_task_runner_handle.h" | 13 #include "base/thread_task_runner_handle.h" |
12 #include "base/threading/thread.h" | 14 #include "base/threading/thread.h" |
13 #include "base/time/time.h" | 15 #include "base/time/time.h" |
14 #include "chromecast/media/cma/base/balanced_media_task_runner_factory.h" | 16 #include "chromecast/media/cma/base/balanced_media_task_runner_factory.h" |
15 #include "chromecast/media/cma/base/decoder_buffer_base.h" | 17 #include "chromecast/media/cma/base/decoder_buffer_base.h" |
16 #include "chromecast/media/cma/base/demuxer_stream_adapter.h" | |
17 #include "chromecast/media/cma/base/demuxer_stream_for_test.h" | 18 #include "chromecast/media/cma/base/demuxer_stream_for_test.h" |
18 #include "chromecast/public/media/cast_decoder_buffer.h" | 19 #include "chromecast/public/media/cast_decoder_buffer.h" |
19 #include "media/base/audio_decoder_config.h" | 20 #include "media/base/audio_decoder_config.h" |
20 #include "media/base/decoder_buffer.h" | 21 #include "media/base/decoder_buffer.h" |
21 #include "media/base/demuxer_stream.h" | 22 #include "media/base/demuxer_stream.h" |
22 #include "media/base/video_decoder_config.h" | 23 #include "media/base/video_decoder_config.h" |
23 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
24 | 25 |
25 namespace chromecast { | 26 namespace chromecast { |
26 namespace media { | 27 namespace media { |
(...skipping 22 matching lines...) Expand all Loading... |
49 | 50 |
50 // Number of expected read frames. | 51 // Number of expected read frames. |
51 int total_expected_frames_; | 52 int total_expected_frames_; |
52 | 53 |
53 // Number of frames actually read so far. | 54 // Number of frames actually read so far. |
54 int frame_received_count_; | 55 int frame_received_count_; |
55 | 56 |
56 // List of expected frame indices with decoder config changes. | 57 // List of expected frame indices with decoder config changes. |
57 std::list<int> config_idx_; | 58 std::list<int> config_idx_; |
58 | 59 |
59 scoped_ptr<DemuxerStreamForTest> demuxer_stream_; | 60 std::unique_ptr<DemuxerStreamForTest> demuxer_stream_; |
60 | 61 |
61 scoped_ptr<CodedFrameProvider> coded_frame_provider_; | 62 std::unique_ptr<CodedFrameProvider> coded_frame_provider_; |
62 | 63 |
63 DISALLOW_COPY_AND_ASSIGN(DemuxerStreamAdapterTest); | 64 DISALLOW_COPY_AND_ASSIGN(DemuxerStreamAdapterTest); |
64 }; | 65 }; |
65 | 66 |
66 DemuxerStreamAdapterTest::DemuxerStreamAdapterTest() | 67 DemuxerStreamAdapterTest::DemuxerStreamAdapterTest() |
67 : use_post_task_for_flush_(false) { | 68 : use_post_task_for_flush_(false) { |
68 } | 69 } |
69 | 70 |
70 DemuxerStreamAdapterTest::~DemuxerStreamAdapterTest() { | 71 DemuxerStreamAdapterTest::~DemuxerStreamAdapterTest() { |
71 } | 72 } |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 early_flush_idx_ = total_frames_; // No early flush. | 153 early_flush_idx_ = total_frames_; // No early flush. |
153 total_expected_frames_ = 10; | 154 total_expected_frames_ = 10; |
154 config_idx_.push_back(0); | 155 config_idx_.push_back(0); |
155 config_idx_.push_back(5); | 156 config_idx_.push_back(5); |
156 | 157 |
157 int cycle_count = 1; | 158 int cycle_count = 1; |
158 int delayed_frame_count = 0; | 159 int delayed_frame_count = 0; |
159 demuxer_stream_.reset(new DemuxerStreamForTest( | 160 demuxer_stream_.reset(new DemuxerStreamForTest( |
160 -1, cycle_count, delayed_frame_count, config_idx_)); | 161 -1, cycle_count, delayed_frame_count, config_idx_)); |
161 | 162 |
162 scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 163 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
163 Initialize(demuxer_stream_.get()); | 164 Initialize(demuxer_stream_.get()); |
164 message_loop->PostTask( | 165 message_loop->PostTask( |
165 FROM_HERE, | 166 FROM_HERE, |
166 base::Bind(&DemuxerStreamAdapterTest::Start, base::Unretained(this))); | 167 base::Bind(&DemuxerStreamAdapterTest::Start, base::Unretained(this))); |
167 message_loop->Run(); | 168 message_loop->Run(); |
168 } | 169 } |
169 | 170 |
170 TEST_F(DemuxerStreamAdapterTest, AllDelayed) { | 171 TEST_F(DemuxerStreamAdapterTest, AllDelayed) { |
171 total_frames_ = 10; | 172 total_frames_ = 10; |
172 early_flush_idx_ = total_frames_; // No early flush. | 173 early_flush_idx_ = total_frames_; // No early flush. |
173 total_expected_frames_ = 10; | 174 total_expected_frames_ = 10; |
174 config_idx_.push_back(0); | 175 config_idx_.push_back(0); |
175 config_idx_.push_back(5); | 176 config_idx_.push_back(5); |
176 | 177 |
177 int cycle_count = 1; | 178 int cycle_count = 1; |
178 int delayed_frame_count = 1; | 179 int delayed_frame_count = 1; |
179 demuxer_stream_.reset(new DemuxerStreamForTest( | 180 demuxer_stream_.reset(new DemuxerStreamForTest( |
180 -1, cycle_count, delayed_frame_count, config_idx_)); | 181 -1, cycle_count, delayed_frame_count, config_idx_)); |
181 | 182 |
182 scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 183 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
183 Initialize(demuxer_stream_.get()); | 184 Initialize(demuxer_stream_.get()); |
184 message_loop->PostTask( | 185 message_loop->PostTask( |
185 FROM_HERE, | 186 FROM_HERE, |
186 base::Bind(&DemuxerStreamAdapterTest::Start, base::Unretained(this))); | 187 base::Bind(&DemuxerStreamAdapterTest::Start, base::Unretained(this))); |
187 message_loop->Run(); | 188 message_loop->Run(); |
188 } | 189 } |
189 | 190 |
190 TEST_F(DemuxerStreamAdapterTest, AllDelayedEarlyFlush) { | 191 TEST_F(DemuxerStreamAdapterTest, AllDelayedEarlyFlush) { |
191 total_frames_ = 10; | 192 total_frames_ = 10; |
192 early_flush_idx_ = 5; | 193 early_flush_idx_ = 5; |
193 use_post_task_for_flush_ = true; | 194 use_post_task_for_flush_ = true; |
194 total_expected_frames_ = 5; | 195 total_expected_frames_ = 5; |
195 config_idx_.push_back(0); | 196 config_idx_.push_back(0); |
196 config_idx_.push_back(3); | 197 config_idx_.push_back(3); |
197 | 198 |
198 int cycle_count = 1; | 199 int cycle_count = 1; |
199 int delayed_frame_count = 1; | 200 int delayed_frame_count = 1; |
200 demuxer_stream_.reset(new DemuxerStreamForTest( | 201 demuxer_stream_.reset(new DemuxerStreamForTest( |
201 -1, cycle_count, delayed_frame_count, config_idx_)); | 202 -1, cycle_count, delayed_frame_count, config_idx_)); |
202 | 203 |
203 scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 204 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
204 Initialize(demuxer_stream_.get()); | 205 Initialize(demuxer_stream_.get()); |
205 message_loop->PostTask( | 206 message_loop->PostTask( |
206 FROM_HERE, | 207 FROM_HERE, |
207 base::Bind(&DemuxerStreamAdapterTest::Start, base::Unretained(this))); | 208 base::Bind(&DemuxerStreamAdapterTest::Start, base::Unretained(this))); |
208 message_loop->Run(); | 209 message_loop->Run(); |
209 } | 210 } |
210 | 211 |
211 } // namespace media | 212 } // namespace media |
212 } // namespace chromecast | 213 } // namespace chromecast |
OLD | NEW |