Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chromecast / public / media / media_pipeline_backend.h
blobcf64acce20882ecb004c6bc5f3af8a854b804f53
1 // Copyright 2015 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.
5 #ifndef CHROMECAST_PUBLIC_MEDIA_MEDIA_PIPELINE_BACKEND_H_
6 #define CHROMECAST_PUBLIC_MEDIA_MEDIA_PIPELINE_BACKEND_H_
8 namespace chromecast {
9 namespace media {
11 class AudioPipelineDevice;
12 class MediaClockDevice;
13 struct MediaPipelineDeviceParams;
14 class VideoPipelineDevice;
16 // Interface for creating and managing ownership of platform-specific clock,
17 // audio and video devices. cast_shell owns the MediaPipelineBackend for
18 // as long as it is needed; the implementation is responsible for
19 // tearing down the individual components correctly when it is destroyed.
20 // A new MediaPipelineBackend will be instantiated for each media player
21 // instance.
22 class MediaPipelineBackend {
23 public:
24 virtual ~MediaPipelineBackend() {}
26 // Returns the platform-specific pipeline clock.
27 virtual MediaClockDevice* GetClock() = 0;
29 // Returns the platform-specific audio backend.
30 virtual AudioPipelineDevice* GetAudio() = 0;
32 // Returns the platform-specific video backend.
33 virtual VideoPipelineDevice* GetVideo() = 0;
36 } // namespace media
37 } // namespace chromecast
39 #endif // CHROMECAST_MEDIA_CMA_BACKEND_MEDIA_PIPELINE_DEVICE_FACTORY_H_