| // 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, | 
 |                                        MediaStreamBuffer* buffer) | 
 |     : Resource(OBJECT_IS_PROXY, instance), | 
 |       index_(index), | 
 |       buffer_(buffer) { | 
 |   DCHECK_EQ(buffer_->header.type, MediaStreamBuffer::TYPE_VIDEO); | 
 | } | 
 |  | 
 | VideoFrameResource::~VideoFrameResource() { | 
 |   CHECK(!buffer_) << "An unused (or unrecycled) frame is destroyed."; | 
 | } | 
 |  | 
 | thunk::PPB_VideoFrame_API* VideoFrameResource::AsPPB_VideoFrame_API() { | 
 |   return this; | 
 | } | 
 |  | 
 | PP_TimeDelta VideoFrameResource::GetTimestamp() { | 
 |   if (!buffer_) { | 
 |     VLOG(1) << "Frame is invalid"; | 
 |     return 0.0; | 
 |   } | 
 |   return buffer_->video.timestamp; | 
 | } | 
 |  | 
 | void VideoFrameResource::SetTimestamp(PP_TimeDelta timestamp) { | 
 |   if (!buffer_) { | 
 |     VLOG(1) << "Frame is invalid"; | 
 |     return; | 
 |   } | 
 |   buffer_->video.timestamp = timestamp; | 
 | } | 
 |  | 
 | PP_VideoFrame_Format VideoFrameResource::GetFormat() { | 
 |   if (!buffer_) { | 
 |     VLOG(1) << "Frame is invalid"; | 
 |     return PP_VIDEOFRAME_FORMAT_UNKNOWN; | 
 |   } | 
 |   return buffer_->video.format; | 
 | } | 
 |  | 
 | PP_Bool VideoFrameResource::GetSize(PP_Size* size) { | 
 |   if (!buffer_) { | 
 |     VLOG(1) << "Frame is invalid"; | 
 |     return PP_FALSE; | 
 |   } | 
 |   *size = buffer_->video.size; | 
 |   return PP_TRUE; | 
 | } | 
 |  | 
 | void* VideoFrameResource::GetDataBuffer() { | 
 |   if (!buffer_) { | 
 |     VLOG(1) << "Frame is invalid"; | 
 |     return NULL; | 
 |   } | 
 |   return buffer_->video.data; | 
 | } | 
 |  | 
 | uint32_t VideoFrameResource::GetDataBufferSize() { | 
 |   if (!buffer_) { | 
 |     VLOG(1) << "Frame is invalid"; | 
 |     return 0; | 
 |   } | 
 |   return buffer_->video.data_size; | 
 | } | 
 |  | 
 | MediaStreamBuffer* VideoFrameResource::GetBuffer() { | 
 |   return buffer_; | 
 | } | 
 |  | 
 | int32_t VideoFrameResource::GetBufferIndex() { | 
 |   return index_; | 
 | } | 
 |  | 
 | void VideoFrameResource::Invalidate() { | 
 |   DCHECK(buffer_); | 
 |   DCHECK_GE(index_, 0); | 
 |   buffer_ = NULL; | 
 |   index_ = -1; | 
 | } | 
 |  | 
 | }  // namespace proxy | 
 | }  // namespace ppapi |