Chromium Code Reviews| Index: content/renderer/pepper/pepper_video_source_host.h |
| diff --git a/content/renderer/pepper/pepper_video_source_host.h b/content/renderer/pepper/pepper_video_source_host.h |
| index 16aba452e050547165ef099cda907dabf0101607..ae7e3fbad259cd4c56a54239c87ca73a3ac2bd45 100644 |
| --- a/content/renderer/pepper/pepper_video_source_host.h |
| +++ b/content/renderer/pepper/pepper_video_source_host.h |
| @@ -6,6 +6,7 @@ |
| #define CONTENT_RENDERER_PEPPER_PEPPER_VIDEO_SOURCE_HOST_H_ |
| #include "base/compiler_specific.h" |
| +#include "base/memory/ref_counted.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "base/memory/weak_ptr.h" |
| #include "content/common/content_export.h" |
| @@ -14,13 +15,14 @@ |
| #include "ppapi/host/host_message_context.h" |
| #include "ppapi/host/resource_host.h" |
| +struct PP_ImageDataDesc; |
| + |
| namespace content { |
| class RendererPpapiHost; |
| class CONTENT_EXPORT PepperVideoSourceHost |
| - : public ppapi::host::ResourceHost, |
| - public content::FrameReaderInterface { |
| + : public ppapi::host::ResourceHost { |
|
raymes
2013/05/10 15:14:48
nit: I think this might fit on the above line
bbudge
2013/05/10 17:38:21
Done.
|
| public: |
| PepperVideoSourceHost(RendererPpapiHost* host, |
| PP_Instance instance, |
| @@ -28,26 +30,41 @@ class CONTENT_EXPORT PepperVideoSourceHost |
| virtual ~PepperVideoSourceHost(); |
| - // content::FrameReaderInterface implementation. |
| - virtual bool GotFrame(cricket::VideoFrame* frame) OVERRIDE; |
| - |
| virtual int32_t OnResourceMessageReceived( |
| const IPC::Message& msg, |
| ppapi::host::HostMessageContext* context) OVERRIDE; |
| private: |
| + // This helper object receives frames on a video worker thread and passes |
| + // them on to us. |
| + class FrameReceiver : public content::FrameReaderInterface, |
| + public base::RefCountedThreadSafe<FrameReceiver> { |
| + public: |
| + explicit FrameReceiver(const base::WeakPtr<PepperVideoSourceHost>& host); |
| + |
| + // content::FrameReaderInterface implementation. |
| + virtual bool GotFrame(cricket::VideoFrame* frame) OVERRIDE; |
| + |
| + void OnGotFrame(scoped_ptr<cricket::VideoFrame> frame); |
| + |
| + private: |
| + friend class base::RefCountedThreadSafe<FrameReceiver>; |
| + virtual ~FrameReceiver(); |
| + |
| + base::WeakPtr<PepperVideoSourceHost> host_; |
| + scoped_refptr<base::MessageLoopProxy> main_message_loop_proxy_; |
| + }; |
| + |
| + friend class FrameReceiver; |
| + |
| int32_t OnHostMsgOpen(ppapi::host::HostMessageContext* context, |
| const std::string& stream_url); |
| int32_t OnHostMsgGetFrame(ppapi::host::HostMessageContext* context); |
| int32_t OnHostMsgClose(ppapi::host::HostMessageContext* context); |
| - void OnGotFrame(scoped_ptr<cricket::VideoFrame> frame); |
| + void SendGetFrameReply(); |
|
raymes
2013/05/10 15:14:48
nit: Might be nice to have comments for these. See
bbudge
2013/05/10 17:38:21
Done.
|
| + void ReportGetFrameError(int32_t error); |
| - int32_t ConvertFrame(ppapi::HostResource* image_data_resource, |
| - PP_TimeTicks* timestamp); |
| - void SendFrame(const ppapi::HostResource& image_data_resource, |
| - PP_TimeTicks timestamp, |
| - int32_t result); |
| void Close(); |
| RendererPpapiHost* renderer_ppapi_host_; |
| @@ -55,9 +72,9 @@ class CONTENT_EXPORT PepperVideoSourceHost |
| base::WeakPtrFactory<PepperVideoSourceHost> weak_factory_; |
| ppapi::host::ReplyMessageContext reply_context_; |
| - scoped_refptr<base::MessageLoopProxy> main_message_loop_proxy_; |
| scoped_ptr<content::VideoSourceHandler> source_handler_; |
| + scoped_refptr<FrameReceiver> frame_receiver_; |
| std::string stream_url_; |
| scoped_ptr<cricket::VideoFrame> last_frame_; |
| bool get_frame_pending_; |