| // Copyright 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/video_frame_resource.h" |
| |
| #include "base/logging.h" |
| #include "ppapi/c/pp_bool.h" |
| #include "ppapi/shared_impl/var.h" |
| |
| namespace ppapi { |
| namespace proxy { |
| |
| VideoFrameResource::VideoFrameResource(PP_Instance instance, |
| int32_t index, |
| MediaStreamFrame* frame) |
| : Resource(OBJECT_IS_PROXY, instance), |
| index_(index), |
| frame_(frame) { |
| DCHECK_EQ(frame_->header.type, MediaStreamFrame::TYPE_VIDEO); |
| } |
| |
| VideoFrameResource::~VideoFrameResource() { |
| CHECK(!frame_) << "An unused (or unrecycled) frame is destroyed."; |
| } |
| |
| thunk::PPB_VideoFrame_API* VideoFrameResource::AsPPB_VideoFrame_API() { |
| return this; |
| } |
| |
| PP_TimeDelta VideoFrameResource::GetTimestamp() { |
| if (!frame_) { |
| VLOG(1) << "Frame is invalid"; |
| return 0.0; |
| } |
| return frame_->video.timestamp; |
| } |
| |
| void VideoFrameResource::SetTimestamp(PP_TimeDelta timestamp) { |
| if (!frame_) { |
| VLOG(1) << "Frame is invalid"; |
| return; |
| } |
| frame_->video.timestamp = timestamp; |
| } |
| |
| PP_VideoFrame_Format VideoFrameResource::GetFormat() { |
| if (!frame_) { |
| VLOG(1) << "Frame is invalid"; |
| return PP_VIDEOFRAME_FORMAT_UNKNOWN; |
| } |
| return frame_->video.format; |
| } |
| |
| PP_Bool VideoFrameResource::GetSize(PP_Size* size) { |
| if (!frame_) { |
| VLOG(1) << "Frame is invalid"; |
| return PP_FALSE; |
| } |
| *size = frame_->video.size; |
| return PP_TRUE; |
| } |
| |
| void* VideoFrameResource::GetDataBuffer() { |
| if (!frame_) { |
| VLOG(1) << "Frame is invalid"; |
| return NULL; |
| } |
| return frame_->video.data; |
| } |
| |
| uint32_t VideoFrameResource::GetDataBufferSize() { |
| if (!frame_) { |
| VLOG(1) << "Frame is invalid"; |
| return 0; |
| } |
| return frame_->video.data_size; |
| } |
| |
| MediaStreamFrame* VideoFrameResource::GetFrameBuffer() { |
| return frame_; |
| } |
| |
| int32_t VideoFrameResource::GetFrameBufferIndex() { |
| return index_; |
| } |
| |
| void VideoFrameResource::Invalidate() { |
| DCHECK(frame_); |
| DCHECK_GE(index_, 0); |
| frame_ = NULL; |
| index_ = -1; |
| } |
| |
| } // namespace proxy |
| } // namespace ppapi |