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_
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
22 class MediaPipelineBackend
{
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;
37 } // namespace chromecast
39 #endif // CHROMECAST_MEDIA_CMA_BACKEND_MEDIA_PIPELINE_DEVICE_FACTORY_H_