| Index: ppapi/cpp/dev/video_capture_client_dev.cc
|
| diff --git a/ppapi/cpp/dev/video_capture_client_dev.cc b/ppapi/cpp/dev/video_capture_client_dev.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1bebeec82f80882c0496db85e52411d01642a016
|
| --- /dev/null
|
| +++ b/ppapi/cpp/dev/video_capture_client_dev.cc
|
| @@ -0,0 +1,78 @@
|
| +// Copyright (c) 2011 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/cpp/dev/video_capture_client_dev.h"
|
| +
|
| +#include "ppapi/c/dev/ppp_video_capture_dev.h"
|
| +#include "ppapi/cpp/instance.h"
|
| +#include "ppapi/cpp/module.h"
|
| +
|
| +namespace pp {
|
| +
|
| +namespace {
|
| +
|
| +const char kPPPVideoCaptureInterface[] = PPP_VIDEO_CAPTURE_DEV_INTERFACE;
|
| +
|
| +void OnDeviceInfo(PP_Instance instance,
|
| + PP_Resource resource,
|
| + const struct PP_VideoCaptureDeviceInfo_Dev* info,
|
| + uint32_t buffer_count,
|
| + const PP_Resource* buffers) {
|
| + VideoCaptureClient_Dev* client = static_cast<VideoCaptureClient_Dev*>(
|
| + Instance::GetPerInstanceObject(instance, kPPPVideoCaptureInterface));
|
| + if (!client)
|
| + return;
|
| +
|
| + std::vector<Buffer_Dev> buffer_list;
|
| + buffer_list.reserve(buffer_count);
|
| + for (uint32_t i = 0; i < buffer_count; ++i)
|
| + buffer_list.push_back(Buffer_Dev(buffers[i]));
|
| +
|
| + client->OnDeviceInfo(resource, *info, buffer_list);
|
| +}
|
| +
|
| +void OnStatus(PP_Instance instance, PP_Resource resource, uint32_t status) {
|
| + VideoCaptureClient_Dev* client = static_cast<VideoCaptureClient_Dev*>(
|
| + Instance::GetPerInstanceObject(instance, kPPPVideoCaptureInterface));
|
| + if (client)
|
| + client->OnStatus(resource, status);
|
| +}
|
| +
|
| +void OnError(PP_Instance instance, PP_Resource resource, uint32_t error_code) {
|
| + VideoCaptureClient_Dev* client = static_cast<VideoCaptureClient_Dev*>(
|
| + Instance::GetPerInstanceObject(instance, kPPPVideoCaptureInterface));
|
| + if (client)
|
| + client->OnError(resource, error_code);
|
| +}
|
| +
|
| +void OnBufferReady(PP_Instance instance,
|
| + PP_Resource resource,
|
| + uint32_t buffer) {
|
| + VideoCaptureClient_Dev* client = static_cast<VideoCaptureClient_Dev*>(
|
| + Instance::GetPerInstanceObject(instance, kPPPVideoCaptureInterface));
|
| + if (client)
|
| + client->OnBufferReady(resource, buffer);
|
| +}
|
| +
|
| +PPP_VideoCapture_Dev ppp_video_capture = {
|
| + OnDeviceInfo,
|
| + OnStatus,
|
| + OnError,
|
| + OnBufferReady
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +VideoCaptureClient_Dev::VideoCaptureClient_Dev(Instance* instance)
|
| + : instance_(instance) {
|
| + pp::Module::Get()->AddPluginInterface(kPPPVideoCaptureInterface,
|
| + &ppp_video_capture);
|
| + instance_->AddPerInstanceObject(kPPPVideoCaptureInterface, this);
|
| +}
|
| +
|
| +VideoCaptureClient_Dev::~VideoCaptureClient_Dev() {
|
| + instance_->RemovePerInstanceObject(kPPPVideoCaptureInterface, this);
|
| +}
|
| +
|
| +} // namespace pp
|
|
|