| 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/memory/shared_memory.h" | 6 #include "base/memory/shared_memory.h" |
| 7 #include "base/numerics/safe_math.h" | 7 #include "base/numerics/safe_math.h" |
| 8 #include "content/common/gpu/client/command_buffer_proxy_impl.h" | 8 #include "content/common/gpu/client/command_buffer_proxy_impl.h" |
| 9 #include "content/common/gpu/media/gpu_video_accelerator_util.h" | 9 #include "content/common/gpu/media/gpu_video_accelerator_util.h" |
| 10 #include "content/common/pepper_file_util.h" | 10 #include "content/common/pepper_file_util.h" |
| (...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 } | 384 } |
| 385 | 385 |
| 386 shm_buffers_.push_back(new ShmBuffer(i, shm.Pass())); | 386 shm_buffers_.push_back(new ShmBuffer(i, shm.Pass())); |
| 387 } | 387 } |
| 388 | 388 |
| 389 // Feed buffers to the encoder. | 389 // Feed buffers to the encoder. |
| 390 std::vector<SerializedHandle> handles; | 390 std::vector<SerializedHandle> handles; |
| 391 for (size_t i = 0; i < shm_buffers_.size(); ++i) { | 391 for (size_t i = 0; i < shm_buffers_.size(); ++i) { |
| 392 encoder_->UseOutputBitstreamBuffer(shm_buffers_[i]->ToBitstreamBuffer()); | 392 encoder_->UseOutputBitstreamBuffer(shm_buffers_[i]->ToBitstreamBuffer()); |
| 393 handles.push_back(SerializedHandle( | 393 handles.push_back(SerializedHandle( |
| 394 renderer_ppapi_host_->ShareHandleWithRemote( | 394 renderer_ppapi_host_->ShareSharedMemoryHandleWithRemote( |
| 395 PlatformFileFromSharedMemoryHandle(shm_buffers_[i]->shm->handle()), | 395 shm_buffers_[i]->shm->handle()), |
| 396 false), | |
| 397 output_buffer_size)); | 396 output_buffer_size)); |
| 398 } | 397 } |
| 399 | 398 |
| 400 host()->SendUnsolicitedReplyWithHandles( | 399 host()->SendUnsolicitedReplyWithHandles( |
| 401 pp_resource(), PpapiPluginMsg_VideoEncoder_BitstreamBuffers( | 400 pp_resource(), PpapiPluginMsg_VideoEncoder_BitstreamBuffers( |
| 402 static_cast<uint32_t>(output_buffer_size)), | 401 static_cast<uint32_t>(output_buffer_size)), |
| 403 handles); | 402 handles); |
| 404 | 403 |
| 405 if (!initialized_) { | 404 if (!initialized_) { |
| 406 // Tell the plugin that initialization has been successful if we | 405 // Tell the plugin that initialization has been successful if we |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 594 &(buffer_manager_.GetBufferPointer(i)->video); | 593 &(buffer_manager_.GetBufferPointer(i)->video); |
| 595 buffer->header.size = buffer_manager_.buffer_size(); | 594 buffer->header.size = buffer_manager_.buffer_size(); |
| 596 buffer->header.type = ppapi::MediaStreamBuffer::TYPE_VIDEO; | 595 buffer->header.type = ppapi::MediaStreamBuffer::TYPE_VIDEO; |
| 597 buffer->format = PP_FromMediaVideoFormat(media_input_format_); | 596 buffer->format = PP_FromMediaVideoFormat(media_input_format_); |
| 598 buffer->size.width = input_coded_size_.width(); | 597 buffer->size.width = input_coded_size_.width(); |
| 599 buffer->size.height = input_coded_size_.height(); | 598 buffer->size.height = input_coded_size_.height(); |
| 600 buffer->data_size = frame_size; | 599 buffer->data_size = frame_size; |
| 601 } | 600 } |
| 602 | 601 |
| 603 DCHECK(get_video_frames_reply_context_.is_valid()); | 602 DCHECK(get_video_frames_reply_context_.is_valid()); |
| 604 get_video_frames_reply_context_.params.AppendHandle(SerializedHandle( | 603 get_video_frames_reply_context_.params.AppendHandle( |
| 605 renderer_ppapi_host_->ShareHandleWithRemote( | 604 SerializedHandle(renderer_ppapi_host_->ShareSharedMemoryHandleWithRemote( |
| 606 PlatformFileFromSharedMemoryHandle(buffer_manager_.shm()->handle()), | 605 buffer_manager_.shm()->handle()), |
| 607 false), | 606 total_size)); |
| 608 total_size)); | |
| 609 | 607 |
| 610 host()->SendReply(get_video_frames_reply_context_, | 608 host()->SendReply(get_video_frames_reply_context_, |
| 611 PpapiPluginMsg_VideoEncoder_GetVideoFramesReply( | 609 PpapiPluginMsg_VideoEncoder_GetVideoFramesReply( |
| 612 frame_count_, buffer_size_aligned, | 610 frame_count_, buffer_size_aligned, |
| 613 PP_FromGfxSize(input_coded_size_))); | 611 PP_FromGfxSize(input_coded_size_))); |
| 614 get_video_frames_reply_context_ = ppapi::host::ReplyMessageContext(); | 612 get_video_frames_reply_context_ = ppapi::host::ReplyMessageContext(); |
| 615 } | 613 } |
| 616 | 614 |
| 617 void PepperVideoEncoderHost::SendGetFramesErrorReply(int32_t error) { | 615 void PepperVideoEncoderHost::SendGetFramesErrorReply(int32_t error) { |
| 618 get_video_frames_reply_context_.params.set_result(error); | 616 get_video_frames_reply_context_.params.set_result(error); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 665 } | 663 } |
| 666 | 664 |
| 667 uint8_t* PepperVideoEncoderHost::ShmHandleToAddress(int32 buffer_id) { | 665 uint8_t* PepperVideoEncoderHost::ShmHandleToAddress(int32 buffer_id) { |
| 668 DCHECK(RenderThreadImpl::current()); | 666 DCHECK(RenderThreadImpl::current()); |
| 669 DCHECK_GE(buffer_id, 0); | 667 DCHECK_GE(buffer_id, 0); |
| 670 DCHECK_LT(buffer_id, static_cast<int32>(shm_buffers_.size())); | 668 DCHECK_LT(buffer_id, static_cast<int32>(shm_buffers_.size())); |
| 671 return static_cast<uint8_t*>(shm_buffers_[buffer_id]->shm->memory()); | 669 return static_cast<uint8_t*>(shm_buffers_[buffer_id]->shm->memory()); |
| 672 } | 670 } |
| 673 | 671 |
| 674 } // namespace content | 672 } // namespace content |
| OLD | NEW |