Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / ppapi / proxy / video_frame_resource.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ppapi/proxy/video_frame_resource.h"
6
7 #include "base/logging.h"
8 #include "ppapi/c/pp_bool.h"
9 #include "ppapi/shared_impl/var.h"
10
11 namespace ppapi {
12 namespace proxy {
13
14 VideoFrameResource::VideoFrameResource(PP_Instance instance,
15                                        int32_t index,
16                                        MediaStreamBuffer* buffer)
17     : Resource(OBJECT_IS_PROXY, instance),
18       index_(index),
19       buffer_(buffer) {
20   DCHECK_EQ(buffer_->header.type, MediaStreamBuffer::TYPE_VIDEO);
21 }
22
23 VideoFrameResource::~VideoFrameResource() {
24   CHECK(!buffer_) << "An unused (or unrecycled) frame is destroyed.";
25 }
26
27 thunk::PPB_VideoFrame_API* VideoFrameResource::AsPPB_VideoFrame_API() {
28   return this;
29 }
30
31 PP_TimeDelta VideoFrameResource::GetTimestamp() {
32   if (!buffer_) {
33     VLOG(1) << "Frame is invalid";
34     return 0.0;
35   }
36   return buffer_->video.timestamp;
37 }
38
39 void VideoFrameResource::SetTimestamp(PP_TimeDelta timestamp) {
40   if (!buffer_) {
41     VLOG(1) << "Frame is invalid";
42     return;
43   }
44   buffer_->video.timestamp = timestamp;
45 }
46
47 PP_VideoFrame_Format VideoFrameResource::GetFormat() {
48   if (!buffer_) {
49     VLOG(1) << "Frame is invalid";
50     return PP_VIDEOFRAME_FORMAT_UNKNOWN;
51   }
52   return buffer_->video.format;
53 }
54
55 PP_Bool VideoFrameResource::GetSize(PP_Size* size) {
56   if (!buffer_) {
57     VLOG(1) << "Frame is invalid";
58     return PP_FALSE;
59   }
60   *size = buffer_->video.size;
61   return PP_TRUE;
62 }
63
64 void* VideoFrameResource::GetDataBuffer() {
65   if (!buffer_) {
66     VLOG(1) << "Frame is invalid";
67     return NULL;
68   }
69   return buffer_->video.data;
70 }
71
72 uint32_t VideoFrameResource::GetDataBufferSize() {
73   if (!buffer_) {
74     VLOG(1) << "Frame is invalid";
75     return 0;
76   }
77   return buffer_->video.data_size;
78 }
79
80 MediaStreamBuffer* VideoFrameResource::GetBuffer() {
81   return buffer_;
82 }
83
84 int32_t VideoFrameResource::GetBufferIndex() {
85   return index_;
86 }
87
88 void VideoFrameResource::Invalidate() {
89   DCHECK(buffer_);
90   DCHECK_GE(index_, 0);
91   buffer_ = NULL;
92   index_ = -1;
93 }
94
95 }  // namespace proxy
96 }  // namespace ppapi