renderer_factory.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. #ifndef MEDIA_BASE_RENDERER_FACTORY_H_
  5. #define MEDIA_BASE_RENDERER_FACTORY_H_
  6. #include <memory>
  7. #include "base/memory/ref_counted.h"
  8. #include "media/base/media_export.h"
  9. #include "media/base/media_resource.h"
  10. #include "media/base/overlay_info.h"
  11. #include "media/base/renderer.h"
  12. #include "ui/gfx/color_space.h"
  13. namespace base {
  14. class SingleThreadTaskRunner;
  15. class TaskRunner;
  16. }
  17. namespace media {
  18. class AudioRendererSink;
  19. class VideoRendererSink;
  20. // A factory class for creating media::Renderer to be used by media pipeline.
  21. class MEDIA_EXPORT RendererFactory {
  22. public:
  23. RendererFactory();
  24. RendererFactory(const RendererFactory&) = delete;
  25. RendererFactory& operator=(const RendererFactory&) = delete;
  26. virtual ~RendererFactory();
  27. // Creates and returns a Renderer. All methods of the created Renderer except
  28. // for GetMediaTime() will be called on the |media_task_runner|.
  29. // GetMediaTime() could be called on any thread.
  30. // The created Renderer can use |audio_renderer_sink| to render audio and
  31. // |video_renderer_sink| to render video.
  32. virtual std::unique_ptr<Renderer> CreateRenderer(
  33. const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
  34. const scoped_refptr<base::TaskRunner>& worker_task_runner,
  35. AudioRendererSink* audio_renderer_sink,
  36. VideoRendererSink* video_renderer_sink,
  37. RequestOverlayInfoCB request_overlay_info_cb,
  38. const gfx::ColorSpace& target_color_space) = 0;
  39. // Returns the MediaResource::Type that should be used with the renderers
  40. // created by this factory.
  41. // NOTE: Returns Type::STREAM by default.
  42. virtual MediaResource::Type GetRequiredMediaResourceType();
  43. };
  44. } // namespace media
  45. #endif // MEDIA_BASE_RENDERER_FACTORY_H_