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 16 struct PP_VideoFrame_Private; 17 18 namespace ppapi { 19 20 class TrackedCallback; 21 22 namespace proxy { 23 24 class 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