Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(220)

Side by Side Diff: ppapi/cpp/dev/video_capture_dev.cc

Issue 11274036: Refactor video capture to new design (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: export Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ppapi/cpp/dev/video_capture_dev.h" 5 #include "ppapi/cpp/dev/video_capture_dev.h"
6 6
7 #include "ppapi/c/dev/ppb_video_capture_dev.h" 7 #include "ppapi/c/dev/ppb_video_capture_dev.h"
8 #include "ppapi/c/pp_errors.h" 8 #include "ppapi/c/pp_errors.h"
9 #include "ppapi/cpp/dev/resource_array_dev.h" 9 #include "ppapi/cpp/dev/resource_array_dev.h"
10 #include "ppapi/cpp/instance_handle.h" 10 #include "ppapi/cpp/instance_handle.h"
11 #include "ppapi/cpp/module_impl.h" 11 #include "ppapi/cpp/module_impl.h"
12 12
13 namespace pp { 13 namespace pp {
14 14
15 namespace { 15 namespace {
16 16
17 template <> const char* interface_name<PPB_VideoCapture_Dev_0_2>() { 17 template <> const char* interface_name<PPB_VideoCapture_Dev_0_2>() {
18 return PPB_VIDEOCAPTURE_DEV_INTERFACE_0_2; 18 return PPB_VIDEOCAPTURE_DEV_INTERFACE_0_2;
19 } 19 }
20 20
21 template <> const char* interface_name<PPB_VideoCapture_Dev_0_1>() {
22 return PPB_VIDEOCAPTURE_DEV_INTERFACE_0_1;
23 }
24
25 } // namespace 21 } // namespace
26 22
27 VideoCapture_Dev::VideoCapture_Dev(const InstanceHandle& instance) 23 VideoCapture_Dev::VideoCapture_Dev(const InstanceHandle& instance) {
28 : requested_info_(),
29 buffer_count_(0) {
30 if (has_interface<PPB_VideoCapture_Dev_0_2>()) { 24 if (has_interface<PPB_VideoCapture_Dev_0_2>()) {
31 PassRefFromConstructor(get_interface<PPB_VideoCapture_Dev_0_2>()->Create( 25 PassRefFromConstructor(get_interface<PPB_VideoCapture_Dev_0_2>()->Create(
32 instance.pp_instance())); 26 instance.pp_instance()));
33 } else if (has_interface<PPB_VideoCapture_Dev_0_1>()) {
34 PassRefFromConstructor(get_interface<PPB_VideoCapture_Dev_0_1>()->Create(
35 instance.pp_instance()));
36 } 27 }
37 } 28 }
38 29
39 VideoCapture_Dev::VideoCapture_Dev(PP_Resource resource) 30 VideoCapture_Dev::VideoCapture_Dev(PP_Resource resource)
40 : Resource(resource), 31 : Resource(resource) {
41 requested_info_(),
42 buffer_count_(0) {
43 } 32 }
44 33
45 VideoCapture_Dev::~VideoCapture_Dev() { 34 VideoCapture_Dev::~VideoCapture_Dev() {
46 } 35 }
47 36
48 // static 37 // static
49 bool VideoCapture_Dev::IsAvailable() { 38 bool VideoCapture_Dev::IsAvailable() {
50 return has_interface<PPB_VideoCapture_Dev_0_2>() || 39 return has_interface<PPB_VideoCapture_Dev_0_2>();
51 has_interface<PPB_VideoCapture_Dev_0_1>();
52 } 40 }
53 41
54 int32_t VideoCapture_Dev::EnumerateDevices( 42 int32_t VideoCapture_Dev::EnumerateDevices(
55 const CompletionCallbackWithOutput<std::vector<DeviceRef_Dev> >& callback) { 43 const CompletionCallbackWithOutput<std::vector<DeviceRef_Dev> >& callback) {
56 if (!has_interface<PPB_VideoCapture_Dev_0_2>()) 44 if (!has_interface<PPB_VideoCapture_Dev_0_2>())
57 return callback.MayForce(PP_ERROR_NOINTERFACE); 45 return callback.MayForce(PP_ERROR_NOINTERFACE);
58 if (!callback.pp_completion_callback().func) 46 if (!callback.pp_completion_callback().func)
59 return callback.MayForce(PP_ERROR_BLOCKS_MAIN_THREAD); 47 return callback.MayForce(PP_ERROR_BLOCKS_MAIN_THREAD);
60 48
61 // ArrayOutputCallbackConverter is responsible to delete it. 49 // ArrayOutputCallbackConverter is responsible to delete it.
(...skipping 10 matching lines...) Expand all
72 const DeviceRef_Dev& device_ref, 60 const DeviceRef_Dev& device_ref,
73 const PP_VideoCaptureDeviceInfo_Dev& requested_info, 61 const PP_VideoCaptureDeviceInfo_Dev& requested_info,
74 uint32_t buffer_count, 62 uint32_t buffer_count,
75 const CompletionCallback& callback) { 63 const CompletionCallback& callback) {
76 if (has_interface<PPB_VideoCapture_Dev_0_2>()) { 64 if (has_interface<PPB_VideoCapture_Dev_0_2>()) {
77 return get_interface<PPB_VideoCapture_Dev_0_2>()->Open( 65 return get_interface<PPB_VideoCapture_Dev_0_2>()->Open(
78 pp_resource(), device_ref.pp_resource(), &requested_info, buffer_count, 66 pp_resource(), device_ref.pp_resource(), &requested_info, buffer_count,
79 callback.pp_completion_callback()); 67 callback.pp_completion_callback());
80 } 68 }
81 69
82 if (has_interface<PPB_VideoCapture_Dev_0_1>()) {
83 if (device_ref.is_null()) {
84 requested_info_ = requested_info;
85 buffer_count_ = buffer_count;
86 return callback.MayForce(PP_OK);
87 }
88 return callback.MayForce(PP_ERROR_NOTSUPPORTED);
89 }
90
91 return callback.MayForce(PP_ERROR_NOINTERFACE); 70 return callback.MayForce(PP_ERROR_NOINTERFACE);
92 } 71 }
93 72
94 int32_t VideoCapture_Dev::StartCapture() { 73 int32_t VideoCapture_Dev::StartCapture() {
95 if (has_interface<PPB_VideoCapture_Dev_0_2>()) { 74 if (has_interface<PPB_VideoCapture_Dev_0_2>()) {
96 return get_interface<PPB_VideoCapture_Dev_0_2>()->StartCapture( 75 return get_interface<PPB_VideoCapture_Dev_0_2>()->StartCapture(
97 pp_resource()); 76 pp_resource());
98 } 77 }
99 78
100 if (has_interface<PPB_VideoCapture_Dev_0_1>()) {
101 return get_interface<PPB_VideoCapture_Dev_0_1>()->StartCapture(
102 pp_resource(), &requested_info_, buffer_count_);
103 }
104
105 return PP_ERROR_NOINTERFACE; 79 return PP_ERROR_NOINTERFACE;
106 } 80 }
107 81
108 int32_t VideoCapture_Dev::ReuseBuffer(uint32_t buffer) { 82 int32_t VideoCapture_Dev::ReuseBuffer(uint32_t buffer) {
109 if (has_interface<PPB_VideoCapture_Dev_0_2>()) { 83 if (has_interface<PPB_VideoCapture_Dev_0_2>()) {
110 return get_interface<PPB_VideoCapture_Dev_0_2>()->ReuseBuffer(pp_resource(), 84 return get_interface<PPB_VideoCapture_Dev_0_2>()->ReuseBuffer(pp_resource(),
111 buffer); 85 buffer);
112 } 86 }
113 87
114 if (has_interface<PPB_VideoCapture_Dev_0_1>()) {
115 return get_interface<PPB_VideoCapture_Dev_0_1>()->ReuseBuffer(pp_resource(),
116 buffer);
117 }
118
119 return PP_ERROR_NOINTERFACE; 88 return PP_ERROR_NOINTERFACE;
120 } 89 }
121 90
122 int32_t VideoCapture_Dev::StopCapture() { 91 int32_t VideoCapture_Dev::StopCapture() {
123 if (has_interface<PPB_VideoCapture_Dev_0_2>()) { 92 if (has_interface<PPB_VideoCapture_Dev_0_2>()) {
124 return get_interface<PPB_VideoCapture_Dev_0_2>()->StopCapture( 93 return get_interface<PPB_VideoCapture_Dev_0_2>()->StopCapture(
125 pp_resource()); 94 pp_resource());
126 } 95 }
127 96
128 if (has_interface<PPB_VideoCapture_Dev_0_1>()) {
129 return get_interface<PPB_VideoCapture_Dev_0_1>()->StopCapture(
130 pp_resource());
131 }
132
133 return PP_ERROR_NOINTERFACE; 97 return PP_ERROR_NOINTERFACE;
134 } 98 }
135 99
136 void VideoCapture_Dev::Close() { 100 void VideoCapture_Dev::Close() {
137 if (has_interface<PPB_VideoCapture_Dev_0_2>()) 101 if (has_interface<PPB_VideoCapture_Dev_0_2>())
138 get_interface<PPB_VideoCapture_Dev_0_2>()->Close(pp_resource()); 102 get_interface<PPB_VideoCapture_Dev_0_2>()->Close(pp_resource());
139 } 103 }
140 104
141 } // namespace pp 105 } // namespace pp
OLDNEW
« no previous file with comments | « ppapi/cpp/dev/video_capture_dev.h ('k') | ppapi/examples/enumerate_devices/enumerate_devices.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698