Chromium Code Reviews| Index: ppapi/proxy/media_stream_track_resource_base.cc |
| diff --git a/ppapi/proxy/media_stream_track_resource_base.cc b/ppapi/proxy/media_stream_track_resource_base.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..166520922f24391edce7d1a141a9879e6d43686c |
| --- /dev/null |
| +++ b/ppapi/proxy/media_stream_track_resource_base.cc |
| @@ -0,0 +1,71 @@ |
| +// Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "ppapi/proxy/media_stream_track_resource_base.h" |
| + |
| +#include "ppapi/proxy/ppapi_messages.h" |
| + |
| +namespace ppapi { |
| +namespace proxy { |
| + |
| +MediaStreamTrackResourceBase::MediaStreamTrackResourceBase( |
| + Connection connection, |
| + PP_Instance instance, |
| + int pending_renderer_id, |
| + const std::string& id) |
| + : PluginResource(connection, instance), |
| + frame_buffer_(this), |
| + id_(id), |
| + has_ended_(false) { |
| + AttachToPendingHost(RENDERER, pending_renderer_id); |
|
yzshen1
2014/01/10 21:05:17
wrong indent.
Peng
2014/01/10 22:46:58
Done.
|
| +} |
| + |
| +MediaStreamTrackResourceBase::~MediaStreamTrackResourceBase() { |
| +} |
| + |
| +void MediaStreamTrackResourceBase::HostEnqueueFrame(int32_t index) { |
| + DCHECK_GE(index, 0); |
| + DCHECK_LT(index, frame_buffer()->number_of_frames()); |
| + Post(RENDERER, PpapiHostMsg_MediaStreamTrack_EnqueueFrame(index)); |
| +} |
| + |
| +void MediaStreamTrackResourceBase::OnReplyReceived( |
| + const ResourceMessageReplyParams& params, |
| + const IPC::Message& msg) { |
| + IPC_BEGIN_MESSAGE_MAP(MediaStreamTrackResourceBase, msg) |
| + PPAPI_DISPATCH_PLUGIN_RESOURCE_CALL( |
| + PpapiPluginMsg_MediaStreamTrack_InitFrames, OnPluginMsgInitFrames) |
| + PPAPI_DISPATCH_PLUGIN_RESOURCE_CALL( |
| + PpapiPluginMsg_MediaStreamTrack_EnqueueFrame, OnPluginMsgEnqueueFrame) |
| + PPAPI_DISPATCH_PLUGIN_RESOURCE_CALL_UNHANDLED( |
| + PluginResource::OnReplyReceived(params, msg)) |
| + IPC_END_MESSAGE_MAP() |
| +} |
| + |
| +void MediaStreamTrackResourceBase::CloseInternal() { |
| + if (!has_ended_) { |
| + Post(RENDERER, PpapiHostMsg_MediaStreamTrack_Close()); |
| + has_ended_ = true; |
| + } |
| +} |
| + |
| +void MediaStreamTrackResourceBase::OnPluginMsgInitFrames( |
| + const ResourceMessageReplyParams& params, |
| + int32_t number_of_frames, |
| + int32_t frame_size) { |
| + base::SharedMemoryHandle shm_handle = base::SharedMemory::NULLHandle(); |
| + params.TakeSharedMemoryHandleAtIndex(0, &shm_handle); |
| + frame_buffer_.SetFrames(number_of_frames, frame_size, |
| + scoped_ptr<base::SharedMemory>(new base::SharedMemory(shm_handle, true)), |
| + false); |
| +} |
| + |
| +void MediaStreamTrackResourceBase::OnPluginMsgEnqueueFrame( |
| + const ResourceMessageReplyParams& params, |
| + int32_t index) { |
| + frame_buffer_.EnqueueFrame(index); |
| +} |
| + |
| +} // namespace proxy |
| +} // namespace ppapi |