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 THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_MEDIA_STREAM_RENDERER_FACTORY_H_
6 #define THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_MEDIA_STREAM_RENDERER_FACTORY_H_
7 
8 #include "base/macros.h"
9 #include "base/memory/scoped_refptr.h"
10 #include "third_party/blink/public/platform/modules/mediastream/web_media_stream_audio_renderer.h"
11 #include "third_party/blink/public/platform/modules/mediastream/web_media_stream_video_renderer.h"
12 #include "third_party/blink/public/platform/web_string.h"
13 #include "third_party/blink/renderer/modules/modules_export.h"
14 
15 namespace base {
16 class SingleThreadTaskRunner;
17 }  // namespace base
18 
19 namespace blink {
20 
21 class WebMediaStream;
22 class WebLocalFrame;
23 
24 // MediaStreamRendererFactory is used by WebMediaPlayerMS to create audio
25 // and video feeds from a MediaStream provided an URL. The factory methods are
26 // virtual in order for Blink web tests to be able to override them.
27 class MODULES_EXPORT MediaStreamRendererFactory {
28  public:
29   MediaStreamRendererFactory();
30   virtual ~MediaStreamRendererFactory();
31 
32   virtual scoped_refptr<WebMediaStreamVideoRenderer> GetVideoRenderer(
33       const WebMediaStream& web_stream,
34       const WebMediaStreamVideoRenderer::RepaintCB& repaint_cb,
35       scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
36       scoped_refptr<base::SingleThreadTaskRunner> main_render_task_runner);
37 
38   virtual scoped_refptr<WebMediaStreamAudioRenderer> GetAudioRenderer(
39       const WebMediaStream& web_stream,
40       WebLocalFrame* web_frame,
41       const WebString& device_id,
42       base::RepeatingCallback<void()> on_render_error_callback);
43 
44  private:
45   DISALLOW_COPY_AND_ASSIGN(MediaStreamRendererFactory);
46 };
47 
48 }  // namespace blink
49 
50 #endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_MEDIA_STREAM_RENDERER_FACTORY_H_
51