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