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_CAST_MEDIA_SHLIB_H_
6 #define CHROMECAST_PUBLIC_CAST_MEDIA_SHLIB_H_
11 #include "chromecast_export.h"
13 namespace chromecast
{
18 // Provides access to platform-specific media systems and hardware resources.
19 // In cast_shell, all usage is from the browser process. An implementation is
20 // assumed to be in an uninitialized state initially. When uninitialized, no
21 // API calls will be made except for Initialize, which brings the implementation
22 // into an initialized state. A call to Finalize returns the implementation to
23 // its uninitialized state. The implementation must support multiple
24 // transitions between these states, to support resource grant/revoke events and
25 // also to allow multiple unit tests to bring up the media systems in isolation
27 class CHROMECAST_EXPORT CastMediaShlib
{
29 // Initializes platform-specific media systems. Only called when in an
30 // uninitialized state.
31 static void Initialize(const std::vector
<std::string
>& argv
);
33 // Tears down platform-specific media systems and returns to the uninitialized
34 // state. The implementation must release all media-related hardware
36 static void Finalize();
38 // Gets the VideoPlane instance for managing the hardware video plane.
39 // While an implementation is in an initialized state, this function may be
40 // called at any time. The VideoPlane object must be destroyed in Finalize.
41 static VideoPlane
* GetVideoPlane();
45 } // namespace chromecast
47 #endif // CHROMECAST_PUBLIC_CAST_MEDIA_SHLIB_H_