1 // Copyright 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 CONTENT_RENDERER_MEDIA_ANDROID_STREAM_TEXTURE_FACTORY_ANDROID_SYNCHRONOUS_IMPL_H_ 6 #define CONTENT_RENDERER_MEDIA_ANDROID_STREAM_TEXTURE_FACTORY_ANDROID_SYNCHRONOUS_IMPL_H_ 7 8 #include "base/callback.h" 9 #include "base/memory/ref_counted.h" 10 #include "content/renderer/media/android/stream_texture_factory_android.h" 11 12 namespace gfx { 13 class SurfaceTextureBridge; 14 } 15 16 namespace WebKit { 17 class WebGraphicsContext3D; 18 } 19 20 namespace content { 21 22 // Factory for when using synchronous compositor in Android WebView. 23 class StreamTextureFactorySynchronousImpl : public StreamTextureFactory { 24 public: 25 class ContextProvider : public base::RefCountedThreadSafe<ContextProvider> { 26 public: 27 virtual scoped_refptr<gfx::SurfaceTextureBridge> GetSurfaceTexture( 28 uint32 stream_id) = 0; 29 30 virtual WebKit::WebGraphicsContext3D* Context3d() = 0; 31 32 protected: 33 friend class base::RefCountedThreadSafe<ContextProvider>; 34 virtual ~ContextProvider() {} 35 }; 36 37 typedef base::Callback<scoped_refptr<ContextProvider>(void)> 38 CreateContextProviderCallback; 39 40 StreamTextureFactorySynchronousImpl( 41 const CreateContextProviderCallback& try_create_callback, 42 int view_id); 43 virtual ~StreamTextureFactorySynchronousImpl(); 44 45 virtual StreamTextureProxy* CreateProxy() OVERRIDE; 46 virtual void EstablishPeer(int32 stream_id, int player_id) OVERRIDE; 47 virtual unsigned CreateStreamTexture( 48 unsigned texture_target, 49 unsigned* texture_id, 50 gpu::Mailbox* texture_mailbox, 51 unsigned* texture_mailbox_sync_point) OVERRIDE; 52 virtual void DestroyStreamTexture(unsigned texture_id) OVERRIDE; 53 virtual void SetStreamTextureSize(int32 stream_id, 54 const gfx::Size& size) OVERRIDE; 55 56 private: 57 CreateContextProviderCallback create_context_provider_callback_; 58 scoped_refptr<ContextProvider> context_provider_; 59 int view_id_; 60 61 DISALLOW_COPY_AND_ASSIGN(StreamTextureFactorySynchronousImpl); 62 }; 63 64 } // namespace content 65 66 #endif // CONTENT_RENDERER_MEDIA_ANDROID_STREAM_TEXTURE_FACTORY_ANDROID_SYNCHRONOUS_IMPL_H_ 67