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
10namespace cc {
11class ContextProvider;
12}
13
14namespace gpu {
15namespace gles2 {
16class GLES2Interface;
17}  // namespace gles2
18}  // namespace gpu
19
20namespace content {
21
22class GpuChannelHost;
23
24class 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