blob: ca11f49c4eb2603eb496cda33ceaf473af056451 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMECAST_PUBLIC_CAST_MEDIA_SHLIB_H_
#define CHROMECAST_PUBLIC_CAST_MEDIA_SHLIB_H_
#include <string>
#include <vector>
#include "chromecast_export.h"
namespace chromecast {
namespace media {
class MediaPipelineBackend;
struct MediaPipelineDeviceParams;
class VideoPlane;
// Provides access to platform-specific media systems and hardware resources.
// In cast_shell, all usage is from the browser process. An implementation is
// assumed to be in an uninitialized state initially. When uninitialized, no
// API calls will be made except for Initialize, which brings the implementation
// into an initialized state. A call to Finalize returns the implementation to
// its uninitialized state. The implementation must support multiple
// transitions between these states, to support resource grant/revoke events and
// also to allow multiple unit tests to bring up the media systems in isolation
// from other tests.
class CHROMECAST_EXPORT CastMediaShlib {
public:
// Initializes platform-specific media systems. Only called when in an
// uninitialized state.
static void Initialize(const std::vector<std::string>& argv);
// Tears down platform-specific media systems and returns to the uninitialized
// state. The implementation must release all media-related hardware
// resources.
static void Finalize();
// Gets the VideoPlane instance for managing the hardware video plane.
// While an implementation is in an initialized state, this function may be
// called at any time. The VideoPlane object must be destroyed in Finalize.
static VideoPlane* GetVideoPlane();
// Creates a media pipeline backend. Called in the browser process for each
// media pipeline and raw audio stream. The caller owns the returned
// MediaPipelineBackend instance.
static MediaPipelineBackend* CreateMediaPipelineBackend(
const MediaPipelineDeviceParams& params);
// Fetches the renderer clock rate (Hz).
static double GetMediaClockRate();
// Fetches the granularity of clock rate adjustments.
static double MediaClockRatePrecision();
// Fetches the possible range of clock rate adjustments.
static void MediaClockRateRange(double* minimum_rate, double* maximum_rate);
// Sets the renderer clock rate (Hz).
static bool SetMediaClockRate(double new_rate);
// Tests if the implementation supports renderer clock rate adjustments.
static bool SupportsMediaClockRateChange();
};
} // namespace media
} // namespace chromecast
#endif // CHROMECAST_PUBLIC_CAST_MEDIA_SHLIB_H_
|