OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/at_exit.h" | 5 #include "base/at_exit.h" |
6 #include "base/bind.h" | 6 #include "base/bind.h" |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/files/memory_mapped_file.h" | 9 #include "base/files/memory_mapped_file.h" |
10 #include "base/memory/scoped_vector.h" | 10 #include "base/memory/scoped_vector.h" |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 VEAClient(const TestStream& test_stream, | 242 VEAClient(const TestStream& test_stream, |
243 ClientStateNotification<ClientState>* note, | 243 ClientStateNotification<ClientState>* note, |
244 bool save_to_file, | 244 bool save_to_file, |
245 unsigned int keyframe_period, | 245 unsigned int keyframe_period, |
246 bool force_bitrate); | 246 bool force_bitrate); |
247 virtual ~VEAClient(); | 247 virtual ~VEAClient(); |
248 void CreateEncoder(); | 248 void CreateEncoder(); |
249 void DestroyEncoder(); | 249 void DestroyEncoder(); |
250 | 250 |
251 // VideoDecodeAccelerator::Client implementation. | 251 // VideoDecodeAccelerator::Client implementation. |
252 void NotifyInitializeDone() OVERRIDE; | |
253 void RequireBitstreamBuffers(unsigned int input_count, | 252 void RequireBitstreamBuffers(unsigned int input_count, |
254 const gfx::Size& input_coded_size, | 253 const gfx::Size& input_coded_size, |
255 size_t output_buffer_size) OVERRIDE; | 254 size_t output_buffer_size) OVERRIDE; |
256 void BitstreamBufferReady(int32 bitstream_buffer_id, | 255 void BitstreamBufferReady(int32 bitstream_buffer_id, |
257 size_t payload_size, | 256 size_t payload_size, |
258 bool key_frame) OVERRIDE; | 257 bool key_frame) OVERRIDE; |
259 void NotifyError(VideoEncodeAccelerator::Error error) OVERRIDE; | 258 void NotifyError(VideoEncodeAccelerator::Error error) OVERRIDE; |
260 | 259 |
261 private: | 260 private: |
262 bool has_encoder() { return encoder_.get(); } | 261 bool has_encoder() { return encoder_.get(); } |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
386 thread_checker_.DetachFromThread(); | 385 thread_checker_.DetachFromThread(); |
387 } | 386 } |
388 | 387 |
389 VEAClient::~VEAClient() { CHECK(!has_encoder()); } | 388 VEAClient::~VEAClient() { CHECK(!has_encoder()); } |
390 | 389 |
391 void VEAClient::CreateEncoder() { | 390 void VEAClient::CreateEncoder() { |
392 DCHECK(thread_checker_.CalledOnValidThread()); | 391 DCHECK(thread_checker_.CalledOnValidThread()); |
393 CHECK(!has_encoder()); | 392 CHECK(!has_encoder()); |
394 | 393 |
395 encoder_.reset(new ExynosVideoEncodeAccelerator()); | 394 encoder_.reset(new ExynosVideoEncodeAccelerator()); |
| 395 SetState(CS_ENCODER_SET); |
396 | 396 |
397 SetState(CS_ENCODER_SET); | |
398 DVLOG(1) << "Profile: " << test_stream_.requested_profile | 397 DVLOG(1) << "Profile: " << test_stream_.requested_profile |
399 << ", requested bitrate: " << test_stream_.requested_bitrate; | 398 << ", requested bitrate: " << test_stream_.requested_bitrate; |
400 encoder_->Initialize(kInputFormat, | 399 if (!encoder_->Initialize(kInputFormat, |
401 test_stream_.size, | 400 test_stream_.size, |
402 test_stream_.requested_profile, | 401 test_stream_.requested_profile, |
403 test_stream_.requested_bitrate, | 402 test_stream_.requested_bitrate, |
404 this); | 403 this)) { |
| 404 DLOG(ERROR) << "VideoEncodeAccelerator::Initialize() failed"; |
| 405 SetState(CS_ERROR); |
| 406 return; |
| 407 } |
| 408 SetInitialConfiguration(); |
| 409 SetState(CS_INITIALIZED); |
405 } | 410 } |
406 | 411 |
407 void VEAClient::DestroyEncoder() { | 412 void VEAClient::DestroyEncoder() { |
408 DCHECK(thread_checker_.CalledOnValidThread()); | 413 DCHECK(thread_checker_.CalledOnValidThread()); |
409 if (!has_encoder()) | 414 if (!has_encoder()) |
410 return; | 415 return; |
411 encoder_.release()->Destroy(); | 416 encoder_.release()->Destroy(); |
412 } | 417 } |
413 | 418 |
414 void VEAClient::NotifyInitializeDone() { | |
415 DCHECK(thread_checker_.CalledOnValidThread()); | |
416 SetInitialConfiguration(); | |
417 SetState(CS_INITIALIZED); | |
418 } | |
419 | |
420 void VEAClient::RequireBitstreamBuffers(unsigned int input_count, | 419 void VEAClient::RequireBitstreamBuffers(unsigned int input_count, |
421 const gfx::Size& input_coded_size, | 420 const gfx::Size& input_coded_size, |
422 size_t output_size) { | 421 size_t output_size) { |
423 DCHECK(thread_checker_.CalledOnValidThread()); | 422 DCHECK(thread_checker_.CalledOnValidThread()); |
424 ASSERT_EQ(state_, CS_INITIALIZED); | 423 ASSERT_EQ(state_, CS_INITIALIZED); |
425 SetState(CS_ENCODING); | 424 SetState(CS_ENCODING); |
426 | 425 |
427 // TODO(posciak): For now we only support input streams that meet encoder | 426 // TODO(posciak): For now we only support input streams that meet encoder |
428 // size requirements exactly (i.e. coded size == visible size). | 427 // size requirements exactly (i.e. coded size == visible size). |
429 input_coded_size_ = input_coded_size; | 428 input_coded_size_ = input_coded_size; |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
762 } | 761 } |
763 if (it->first == "v" || it->first == "vmodule") | 762 if (it->first == "v" || it->first == "vmodule") |
764 continue; | 763 continue; |
765 LOG(FATAL) << "Unexpected switch: " << it->first << ":" << it->second; | 764 LOG(FATAL) << "Unexpected switch: " << it->first << ":" << it->second; |
766 } | 765 } |
767 | 766 |
768 base::ShadowingAtExitManager at_exit_manager; | 767 base::ShadowingAtExitManager at_exit_manager; |
769 | 768 |
770 return RUN_ALL_TESTS(); | 769 return RUN_ALL_TESTS(); |
771 } | 770 } |
OLD | NEW |