video_destination_private.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
1// Copyright (c) 2013 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/cpp/private/video_destination_private.h" 6 7#include "ppapi/c/pp_errors.h" 8#include "ppapi/c/private/ppb_video_destination_private.h" 9#include "ppapi/cpp/instance_handle.h" 10#include "ppapi/cpp/module.h" 11#include "ppapi/cpp/module_impl.h" 12#include "ppapi/cpp/private/video_frame_private.h" 13#include "ppapi/cpp/var.h" 14 15namespace pp { 16 17namespace { 18 19template <> const char* interface_name<PPB_VideoDestination_Private_0_1>() { 20 return PPB_VIDEODESTINATION_PRIVATE_INTERFACE_0_1; 21} 22 23} // namespace 24 25VideoDestination_Private::VideoDestination_Private() { 26} 27 28VideoDestination_Private::VideoDestination_Private( 29 const InstanceHandle& instance) { 30 if (!has_interface<PPB_VideoDestination_Private_0_1>()) 31 return; 32 PassRefFromConstructor( 33 get_interface<PPB_VideoDestination_Private_0_1>()->Create( 34 instance.pp_instance())); 35} 36 37VideoDestination_Private::VideoDestination_Private( 38 const VideoDestination_Private& other) 39 : Resource(other) { 40} 41 42VideoDestination_Private::VideoDestination_Private(PassRef, 43 PP_Resource resource) 44 : Resource(PASS_REF, resource) { 45} 46 47int32_t VideoDestination_Private::Open(const Var& stream_url, 48 const CompletionCallback& cc) { 49 if (has_interface<PPB_VideoDestination_Private_0_1>()) { 50 int32_t result = 51 get_interface<PPB_VideoDestination_Private_0_1>()->Open( 52 pp_resource(), 53 stream_url.pp_var(), 54 cc.pp_completion_callback()); 55 return result; 56 } 57 return cc.MayForce(PP_ERROR_NOINTERFACE); 58} 59 60int32_t VideoDestination_Private::PutFrame( 61 const VideoFrame_Private& frame) { 62 if (has_interface<PPB_VideoDestination_Private_0_1>()) { 63 return get_interface<PPB_VideoDestination_Private_0_1>()->PutFrame( 64 pp_resource(), 65 &frame.pp_video_frame()); 66 } 67 return PP_ERROR_NOINTERFACE; 68} 69 70void VideoDestination_Private::Close() { 71 if (has_interface<PPB_VideoDestination_Private_0_1>()) { 72 get_interface<PPB_VideoDestination_Private_0_1>()->Close(pp_resource()); 73 } 74} 75 76} // namespace pp 77