summaryrefslogtreecommitdiffstats
path: root/chromium/content/renderer/media/android/stream_texture_factory_synchronous_impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/renderer/media/android/stream_texture_factory_synchronous_impl.h')
-rw-r--r--chromium/content/renderer/media/android/stream_texture_factory_synchronous_impl.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/chromium/content/renderer/media/android/stream_texture_factory_synchronous_impl.h b/chromium/content/renderer/media/android/stream_texture_factory_synchronous_impl.h
new file mode 100644
index 00000000000..3466c564c9b
--- /dev/null
+++ b/chromium/content/renderer/media/android/stream_texture_factory_synchronous_impl.h
@@ -0,0 +1,71 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_RENDERER_MEDIA_ANDROID_STREAM_TEXTURE_FACTORY_SYNCHRONOUS_IMPL_H_
+#define CONTENT_RENDERER_MEDIA_ANDROID_STREAM_TEXTURE_FACTORY_SYNCHRONOUS_IMPL_H_
+
+#include "base/callback.h"
+#include "base/memory/ref_counted.h"
+#include "content/renderer/media/android/stream_texture_factory.h"
+
+namespace gfx {
+class SurfaceTexture;
+}
+
+namespace gpu {
+namespace gles2 {
+class GLES2Interface;
+} // namespace gles2
+} // namespace gpu
+
+namespace content {
+
+// Factory for when using synchronous compositor in Android WebView.
+class StreamTextureFactorySynchronousImpl : public StreamTextureFactory {
+ public:
+ class ContextProvider : public base::RefCountedThreadSafe<ContextProvider> {
+ public:
+ virtual scoped_refptr<gfx::SurfaceTexture> GetSurfaceTexture(
+ uint32 stream_id) = 0;
+
+ virtual gpu::gles2::GLES2Interface* ContextGL() = 0;
+
+ protected:
+ friend class base::RefCountedThreadSafe<ContextProvider>;
+ virtual ~ContextProvider() {}
+ };
+
+ typedef base::Callback<scoped_refptr<ContextProvider>(void)>
+ CreateContextProviderCallback;
+
+ static scoped_refptr<StreamTextureFactorySynchronousImpl> Create(
+ const CreateContextProviderCallback& try_create_callback,
+ int frame_id);
+
+ virtual StreamTextureProxy* CreateProxy() OVERRIDE;
+ virtual void EstablishPeer(int32 stream_id, int player_id) OVERRIDE;
+ virtual unsigned CreateStreamTexture(unsigned texture_target,
+ unsigned* texture_id,
+ gpu::Mailbox* texture_mailbox) OVERRIDE;
+ virtual void SetStreamTextureSize(int32 stream_id,
+ const gfx::Size& size) OVERRIDE;
+ virtual gpu::gles2::GLES2Interface* ContextGL() OVERRIDE;
+
+ private:
+ friend class base::RefCounted<StreamTextureFactorySynchronousImpl>;
+ StreamTextureFactorySynchronousImpl(
+ const CreateContextProviderCallback& try_create_callback,
+ int frame_id);
+ virtual ~StreamTextureFactorySynchronousImpl();
+
+ CreateContextProviderCallback create_context_provider_callback_;
+ scoped_refptr<ContextProvider> context_provider_;
+ int frame_id_;
+
+ DISALLOW_IMPLICIT_CONSTRUCTORS(StreamTextureFactorySynchronousImpl);
+};
+
+} // namespace content
+
+#endif // CONTENT_RENDERER_MEDIA_ANDROID_STREAM_TEXTURE_FACTORY_SYNCHRONOUS_IMPL_H_