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