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 |