| 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 |