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#ifndef PPAPI_PROXY_VIDEO_DESTINATION_RESOURCE_H_ 6#define PPAPI_PROXY_VIDEO_DESTINATION_RESOURCE_H_ 7 8#include <string> 9 10#include "ppapi/c/pp_var.h" 11#include "ppapi/proxy/connection.h" 12#include "ppapi/proxy/plugin_resource.h" 13#include "ppapi/proxy/ppapi_proxy_export.h" 14#include "ppapi/thunk/ppb_video_destination_private_api.h" 15 16struct PP_VideoFrame_Private; 17 18namespace ppapi { 19 20class TrackedCallback; 21 22namespace proxy { 23 24class PPAPI_PROXY_EXPORT VideoDestinationResource 25 : public PluginResource, 26 public thunk::PPB_VideoDestination_Private_API { 27 public: 28 VideoDestinationResource(Connection connection, 29 PP_Instance instance); 30 virtual ~VideoDestinationResource(); 31 32 // Resource overrides. 33 virtual thunk::PPB_VideoDestination_Private_API* 34 AsPPB_VideoDestination_Private_API() OVERRIDE; 35 36 // PPB_VideoDestination_Private_API implementation. 37 virtual int32_t Open( 38 const PP_Var& stream_url, 39 scoped_refptr<TrackedCallback> callback) OVERRIDE; 40 virtual int32_t PutFrame(const PP_VideoFrame_Private& frame) OVERRIDE; 41 virtual void Close() OVERRIDE; 42 43 private: 44 void OnPluginMsgOpenComplete( 45 const ResourceMessageReplyParams& params); 46 47 scoped_refptr<TrackedCallback> open_callback_; 48 bool is_open_; 49 50 DISALLOW_COPY_AND_ASSIGN(VideoDestinationResource); 51}; 52 53} // namespace proxy 54} // namespace ppapi 55 56#endif // PPAPI_PROXY_VIDEO_DESTINATION_RESOURCE_H_ 57