1 // Copyright 2014 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 CONTENT_RENDERER_MEDIA_ANDROID_STREAM_TEXTURE_FACTORY_IMPL_H_ 6 #define CONTENT_RENDERER_MEDIA_ANDROID_STREAM_TEXTURE_FACTORY_IMPL_H_ 7 8 #include "content/renderer/media/android/stream_texture_factory.h" 9 10 namespace cc { 11 class ContextProvider; 12 } 13 14 namespace gpu { 15 namespace gles2 { 16 class GLES2Interface; 17 } // namespace gles2 18 } // namespace gpu 19 20 namespace content { 21 22 class GpuChannelHost; 23 24 class StreamTextureFactoryImpl : public StreamTextureFactory { 25 public: 26 static scoped_refptr<StreamTextureFactoryImpl> Create( 27 const scoped_refptr<cc::ContextProvider>& context_provider, 28 GpuChannelHost* channel, 29 int frame_id); 30 31 // StreamTextureFactory implementation. 32 virtual StreamTextureProxy* CreateProxy() OVERRIDE; 33 virtual void EstablishPeer(int32 stream_id, int player_id) OVERRIDE; 34 virtual unsigned CreateStreamTexture(unsigned texture_target, 35 unsigned* texture_id, 36 gpu::Mailbox* texture_mailbox) OVERRIDE; 37 virtual void SetStreamTextureSize(int32 texture_id, 38 const gfx::Size& size) OVERRIDE; 39 virtual gpu::gles2::GLES2Interface* ContextGL() OVERRIDE; 40 virtual void AddObserver(StreamTextureFactoryContextObserver* obs) OVERRIDE; 41 virtual void RemoveObserver( 42 StreamTextureFactoryContextObserver* obs) OVERRIDE; 43 44 private: 45 friend class base::RefCounted<StreamTextureFactoryImpl>; 46 StreamTextureFactoryImpl( 47 const scoped_refptr<cc::ContextProvider>& context_provider, 48 GpuChannelHost* channel, 49 int frame_id); 50 virtual ~StreamTextureFactoryImpl(); 51 52 scoped_refptr<cc::ContextProvider> context_provider_; 53 scoped_refptr<GpuChannelHost> channel_; 54 int frame_id_; 55 56 DISALLOW_IMPLICIT_CONSTRUCTORS(StreamTextureFactoryImpl); 57 }; 58 59 } // namespace content 60 61 #endif // CONTENT_RENDERER_MEDIA_ANDROID_STREAM_TEXTURE_FACTORY_IMPL_H_ 62