| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/renderer/pepper/pepper_video_encoder_host.h" | 5 #include "content/renderer/pepper/pepper_video_encoder_host.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/memory/shared_memory.h" | 10 #include "base/memory/shared_memory.h" |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 return !accelerated; | 169 return !accelerated; |
| 170 case PP_HARDWAREACCELERATION_WITHFALLBACK: | 170 case PP_HARDWAREACCELERATION_WITHFALLBACK: |
| 171 return true; | 171 return true; |
| 172 // No default case, to catch unhandled PP_HardwareAcceleration values. | 172 // No default case, to catch unhandled PP_HardwareAcceleration values. |
| 173 } | 173 } |
| 174 return false; | 174 return false; |
| 175 } | 175 } |
| 176 | 176 |
| 177 } // namespace | 177 } // namespace |
| 178 | 178 |
| 179 PepperVideoEncoderHost::ShmBuffer::ShmBuffer(uint32_t id, | 179 PepperVideoEncoderHost::ShmBuffer::ShmBuffer( |
| 180 scoped_ptr<base::SharedMemory> shm) | 180 uint32_t id, |
| 181 std::unique_ptr<base::SharedMemory> shm) |
| 181 : id(id), shm(std::move(shm)), in_use(true) { | 182 : id(id), shm(std::move(shm)), in_use(true) { |
| 182 DCHECK(this->shm); | 183 DCHECK(this->shm); |
| 183 } | 184 } |
| 184 | 185 |
| 185 PepperVideoEncoderHost::ShmBuffer::~ShmBuffer() { | 186 PepperVideoEncoderHost::ShmBuffer::~ShmBuffer() { |
| 186 } | 187 } |
| 187 | 188 |
| 188 media::BitstreamBuffer PepperVideoEncoderHost::ShmBuffer::ToBitstreamBuffer() { | 189 media::BitstreamBuffer PepperVideoEncoderHost::ShmBuffer::ToBitstreamBuffer() { |
| 189 return media::BitstreamBuffer(id, shm->handle(), shm->mapped_size()); | 190 return media::BitstreamBuffer(id, shm->handle(), shm->mapped_size()); |
| 190 } | 191 } |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 370 const gfx::Size& input_coded_size, | 371 const gfx::Size& input_coded_size, |
| 371 size_t output_buffer_size) { | 372 size_t output_buffer_size) { |
| 372 DCHECK(RenderThreadImpl::current()); | 373 DCHECK(RenderThreadImpl::current()); |
| 373 // We assume RequireBitstreamBuffers is only called once. | 374 // We assume RequireBitstreamBuffers is only called once. |
| 374 DCHECK(!initialized_); | 375 DCHECK(!initialized_); |
| 375 | 376 |
| 376 input_coded_size_ = input_coded_size; | 377 input_coded_size_ = input_coded_size; |
| 377 frame_count_ = frame_count; | 378 frame_count_ = frame_count; |
| 378 | 379 |
| 379 for (uint32_t i = 0; i < kDefaultNumberOfBitstreamBuffers; ++i) { | 380 for (uint32_t i = 0; i < kDefaultNumberOfBitstreamBuffers; ++i) { |
| 380 scoped_ptr<base::SharedMemory> shm( | 381 std::unique_ptr<base::SharedMemory> shm( |
| 381 RenderThread::Get()->HostAllocateSharedMemoryBuffer( | 382 RenderThread::Get()->HostAllocateSharedMemoryBuffer( |
| 382 output_buffer_size)); | 383 output_buffer_size)); |
| 383 | 384 |
| 384 if (!shm || !shm->Map(output_buffer_size)) { | 385 if (!shm || !shm->Map(output_buffer_size)) { |
| 385 shm_buffers_.clear(); | 386 shm_buffers_.clear(); |
| 386 break; | 387 break; |
| 387 } | 388 } |
| 388 | 389 |
| 389 shm_buffers_.push_back(new ShmBuffer(i, std::move(shm))); | 390 shm_buffers_.push_back(new ShmBuffer(i, std::move(shm))); |
| 390 } | 391 } |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 568 media::VideoFrame::AllocationSize(media_input_format_, input_coded_size_); | 569 media::VideoFrame::AllocationSize(media_input_format_, input_coded_size_); |
| 569 uint32_t frame_size = size.ValueOrDie(); | 570 uint32_t frame_size = size.ValueOrDie(); |
| 570 size += sizeof(ppapi::MediaStreamBuffer::Video); | 571 size += sizeof(ppapi::MediaStreamBuffer::Video); |
| 571 uint32_t buffer_size = size.ValueOrDie(); | 572 uint32_t buffer_size = size.ValueOrDie(); |
| 572 // Make each buffer 4 byte aligned. | 573 // Make each buffer 4 byte aligned. |
| 573 size += (4 - buffer_size % 4); | 574 size += (4 - buffer_size % 4); |
| 574 uint32_t buffer_size_aligned = size.ValueOrDie(); | 575 uint32_t buffer_size_aligned = size.ValueOrDie(); |
| 575 size *= frame_count_; | 576 size *= frame_count_; |
| 576 uint32_t total_size = size.ValueOrDie(); | 577 uint32_t total_size = size.ValueOrDie(); |
| 577 | 578 |
| 578 scoped_ptr<base::SharedMemory> shm( | 579 std::unique_ptr<base::SharedMemory> shm( |
| 579 RenderThreadImpl::current()->HostAllocateSharedMemoryBuffer(total_size)); | 580 RenderThreadImpl::current()->HostAllocateSharedMemoryBuffer(total_size)); |
| 580 if (!shm || | 581 if (!shm || |
| 581 !buffer_manager_.SetBuffers(frame_count_, buffer_size_aligned, | 582 !buffer_manager_.SetBuffers(frame_count_, buffer_size_aligned, |
| 582 std::move(shm), true)) { | 583 std::move(shm), true)) { |
| 583 SendGetFramesErrorReply(PP_ERROR_NOMEMORY); | 584 SendGetFramesErrorReply(PP_ERROR_NOMEMORY); |
| 584 return; | 585 return; |
| 585 } | 586 } |
| 586 | 587 |
| 587 VLOG(4) << " frame_count=" << frame_count_ << " frame_size=" << frame_size | 588 VLOG(4) << " frame_count=" << frame_count_ << " frame_size=" << frame_size |
| 588 << " buffer_size=" << buffer_size_aligned; | 589 << " buffer_size=" << buffer_size_aligned; |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 666 } | 667 } |
| 667 | 668 |
| 668 uint8_t* PepperVideoEncoderHost::ShmHandleToAddress(int32_t buffer_id) { | 669 uint8_t* PepperVideoEncoderHost::ShmHandleToAddress(int32_t buffer_id) { |
| 669 DCHECK(RenderThreadImpl::current()); | 670 DCHECK(RenderThreadImpl::current()); |
| 670 DCHECK_GE(buffer_id, 0); | 671 DCHECK_GE(buffer_id, 0); |
| 671 DCHECK_LT(buffer_id, static_cast<int32_t>(shm_buffers_.size())); | 672 DCHECK_LT(buffer_id, static_cast<int32_t>(shm_buffers_.size())); |
| 672 return static_cast<uint8_t*>(shm_buffers_[buffer_id]->shm->memory()); | 673 return static_cast<uint8_t*>(shm_buffers_[buffer_id]->shm->memory()); |
| 673 } | 674 } |
| 674 | 675 |
| 675 } // namespace content | 676 } // namespace content |
| OLD | NEW |