Ocean
Media.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) Meta Platforms, Inc. and affiliates.
3  *
4  * This source code is licensed under the MIT license found in the
5  * LICENSE file in the root directory of this source tree.
6  */
7 
8 #ifndef META_OCEAN_MEDIA_MEDIA_H
9 #define META_OCEAN_MEDIA_MEDIA_H
10 
11 #include "ocean/base/Base.h"
12 #include "ocean/base/Messenger.h"
13 
14 namespace Ocean
15 {
16 
17 namespace Media
18 {
19 
20 /**
21  * @defgroup media Ocean Media Abstraction Library
22  * @{
23  * The Ocean Media Library provides access to individual media objects.
24  * Media object can provide visual or/and audio content or can capture visual or/and audio content.<br>
25  *
26  * The base class for all media objects providing content is the Medium class.<br>
27  * All Medium classes are designed to provide the content in real-time.<br>
28  * There can be finite Medium objects like movie or audio files or there can be infinite Medium objects like live video streams or live camera streams.<br>
29  * @see Medium, Image, Movie, Audio, FiniteMedium.
30  *
31  * The base class for all media objects capturing content is the Recorder class.<br>
32  * Whether a Recorder is able to capture content in real-time depends on the underlying hardware and the underlying encoder technology.<br>
33  * @see Recorder, MovieRecorder.
34  *
35  * Further, this library provides an abstract frame provider interface allowing random access for visual content of finite media objects.<br>
36  * @see MediaFrameProviderInterface.
37  *
38  * This library is mainly an abstraction layer for the media objects.<br>
39  * The actual implementation of the media objects is lokated in separate libraries allowing to realize individual media libraries on individual hardware platforms.<br>
40  * However, the actual implementation is hided from the user so that any kind of media object from any kind of media library can be applied by the same functions and interfaces.<br>
41  * Any derived media library implements a Library class which registers all supported media objects and media types at the media Manager of this abstraction library.<br>
42  * This manager provides the unique access to all media objects.<br>
43  * @see Manager, Library.
44  *
45  * The Utilities class provides simple helper functions to receive e.g., the visual content from an image file.
46  *
47  * The library is platform independent.
48  * @}
49  */
50 
51 /**
52  * @namespace Ocean::Media Namespace of the Media library.<p>
53  * The Namespace Ocean::Media is used in the entire Ocean Media Library.
54  */
55 
56 // Defines OCEAN_MEDIA_EXPORT for dll export and import.
57 #if defined(_WINDOWS) && defined(OCEAN_RUNTIME_SHARED)
58  #ifdef USE_OCEAN_MEDIA_EXPORT
59  #define OCEAN_MEDIA_EXPORT __declspec(dllexport)
60  #else
61  #define OCEAN_MEDIA_EXPORT __declspec(dllimport)
62  #endif
63 #else
64  #define OCEAN_MEDIA_EXPORT
65 #endif
66 
67 }
68 
69 }
70 
71 #endif // META_OCEAN_MEDIA_MEDIA_H
The namespace covering the entire Ocean framework.
Definition: Accessor.h:15