Chromium Code Reviews| 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 "content/common/gpu/media/vaapi_video_encode_accelerator.h" | 5 #include "content/common/gpu/media/vaapi_video_encode_accelerator.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "base/numerics/safe_conversions.h" | 10 #include "base/numerics/safe_conversions.h" |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 89 | 89 |
| 90 struct VaapiVideoEncodeAccelerator::InputFrameRef { | 90 struct VaapiVideoEncodeAccelerator::InputFrameRef { |
| 91 InputFrameRef(const scoped_refptr<media::VideoFrame>& frame, | 91 InputFrameRef(const scoped_refptr<media::VideoFrame>& frame, |
| 92 bool force_keyframe) | 92 bool force_keyframe) |
| 93 : frame(frame), force_keyframe(force_keyframe) {} | 93 : frame(frame), force_keyframe(force_keyframe) {} |
| 94 const scoped_refptr<media::VideoFrame> frame; | 94 const scoped_refptr<media::VideoFrame> frame; |
| 95 const bool force_keyframe; | 95 const bool force_keyframe; |
| 96 }; | 96 }; |
| 97 | 97 |
| 98 struct VaapiVideoEncodeAccelerator::BitstreamBufferRef { | 98 struct VaapiVideoEncodeAccelerator::BitstreamBufferRef { |
| 99 BitstreamBufferRef(int32 id, scoped_ptr<base::SharedMemory> shm, size_t size) | 99 BitstreamBufferRef(int32 id, scoped_ptr<SharedMemoryRegion> shm) |
| 100 : id(id), shm(shm.Pass()), size(size) {} | 100 : id(id), shm(shm.Pass()) {} |
|
Pawel Osciak
2015/12/31 02:05:54
std::move
Owen Lin
2016/01/04 08:54:18
Done.
| |
| 101 const int32 id; | 101 const int32 id; |
| 102 const scoped_ptr<base::SharedMemory> shm; | 102 const scoped_ptr<base::SharedMemory> shm; |
| 103 const size_t size; | |
| 104 }; | 103 }; |
| 105 | 104 |
| 106 media::VideoEncodeAccelerator::SupportedProfiles | 105 media::VideoEncodeAccelerator::SupportedProfiles |
| 107 VaapiVideoEncodeAccelerator::GetSupportedProfiles() { | 106 VaapiVideoEncodeAccelerator::GetSupportedProfiles() { |
| 108 return VaapiWrapper::GetSupportedEncodeProfiles(); | 107 return VaapiWrapper::GetSupportedEncodeProfiles(); |
| 109 } | 108 } |
| 110 | 109 |
| 111 static unsigned int Log2OfPowerOf2(unsigned int x) { | 110 static unsigned int Log2OfPowerOf2(unsigned int x) { |
| 112 CHECK_GT(x, 0u); | 111 CHECK_GT(x, 0u); |
| 113 DCHECK_EQ(x & (x - 1), 0u); | 112 DCHECK_EQ(x & (x - 1), 0u); |
| (...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 656 void VaapiVideoEncodeAccelerator::UseOutputBitstreamBuffer( | 655 void VaapiVideoEncodeAccelerator::UseOutputBitstreamBuffer( |
| 657 const media::BitstreamBuffer& buffer) { | 656 const media::BitstreamBuffer& buffer) { |
| 658 DVLOGF(4) << "id: " << buffer.id(); | 657 DVLOGF(4) << "id: " << buffer.id(); |
| 659 DCHECK(child_task_runner_->BelongsToCurrentThread()); | 658 DCHECK(child_task_runner_->BelongsToCurrentThread()); |
| 660 | 659 |
| 661 if (buffer.size() < output_buffer_byte_size_) { | 660 if (buffer.size() < output_buffer_byte_size_) { |
| 662 NOTIFY_ERROR(kInvalidArgumentError, "Provided bitstream buffer too small"); | 661 NOTIFY_ERROR(kInvalidArgumentError, "Provided bitstream buffer too small"); |
| 663 return; | 662 return; |
| 664 } | 663 } |
| 665 | 664 |
| 666 scoped_ptr<base::SharedMemory> shm( | 665 scoped_ptr<SharedMemoryRegion> shm(new SharedMemoryRegion(buffer, false)); |
| 667 new base::SharedMemory(buffer.handle(), false)); | 666 if (!shm->Map()) { |
| 668 if (!shm->Map(buffer.size())) { | |
| 669 NOTIFY_ERROR(kPlatformFailureError, "Failed mapping shared memory."); | 667 NOTIFY_ERROR(kPlatformFailureError, "Failed mapping shared memory."); |
| 670 return; | 668 return; |
| 671 } | 669 } |
| 672 | 670 |
| 673 scoped_ptr<BitstreamBufferRef> buffer_ref( | 671 scoped_ptr<BitstreamBufferRef> buffer_ref(new BitstreamBufferRef( |
| 674 new BitstreamBufferRef(buffer.id(), shm.Pass(), buffer.size())); | 672 buffer.id(), shm.Pass(), buffer.offset(), buffer.size())); |
|
Pawel Osciak
2015/12/31 02:05:54
I think we don't have this constructor in Bitstrea
Owen Lin
2016/01/04 08:54:18
Done.
| |
| 675 | 673 |
| 676 encoder_thread_task_runner_->PostTask( | 674 encoder_thread_task_runner_->PostTask( |
| 677 FROM_HERE, | 675 FROM_HERE, |
| 678 base::Bind(&VaapiVideoEncodeAccelerator::UseOutputBitstreamBufferTask, | 676 base::Bind(&VaapiVideoEncodeAccelerator::UseOutputBitstreamBufferTask, |
| 679 base::Unretained(this), base::Passed(&buffer_ref))); | 677 base::Unretained(this), base::Passed(&buffer_ref))); |
| 680 } | 678 } |
| 681 | 679 |
| 682 void VaapiVideoEncodeAccelerator::UseOutputBitstreamBufferTask( | 680 void VaapiVideoEncodeAccelerator::UseOutputBitstreamBufferTask( |
| 683 scoped_ptr<BitstreamBufferRef> buffer_ref) { | 681 scoped_ptr<BitstreamBufferRef> buffer_ref) { |
| 684 DCHECK(encoder_thread_task_runner_->BelongsToCurrentThread()); | 682 DCHECK(encoder_thread_task_runner_->BelongsToCurrentThread()); |
| (...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1052 } | 1050 } |
| 1053 | 1051 |
| 1054 VaapiVideoEncodeAccelerator::EncodeJob::EncodeJob() | 1052 VaapiVideoEncodeAccelerator::EncodeJob::EncodeJob() |
| 1055 : coded_buffer(VA_INVALID_ID), keyframe(false) { | 1053 : coded_buffer(VA_INVALID_ID), keyframe(false) { |
| 1056 } | 1054 } |
| 1057 | 1055 |
| 1058 VaapiVideoEncodeAccelerator::EncodeJob::~EncodeJob() { | 1056 VaapiVideoEncodeAccelerator::EncodeJob::~EncodeJob() { |
| 1059 } | 1057 } |
| 1060 | 1058 |
| 1061 } // namespace content | 1059 } // namespace content |
| OLD | NEW |