summaryrefslogtreecommitdiffstats
path: root/xbmc/addons/kodi-dev-kit/include/kodi/c-api/addon-instance/inputstream/stream_codec.h
blob: b489cb90973252f979c5b578bc47436e2dccd985 (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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
 *  Copyright (C) 2017-2018 Team Kodi
 *  This file is part of Kodi - https://kodi.tv
 *
 *  SPDX-License-Identifier: GPL-2.0-or-later
 *  See LICENSES/README.md for more information.
 */

#ifndef C_API_ADDONINSTANCE_INPUTSTREAM_STREAMCODEC_H
#define C_API_ADDONINSTANCE_INPUTSTREAM_STREAMCODEC_H

#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */

  //==============================================================================
  /// @defgroup cpp_kodi_addon_inputstream_Defs_StreamEncryption_STREAMCODEC_PROFILE enum STREAMCODEC_PROFILE
  /// @ingroup cpp_kodi_addon_inputstream_Defs_StreamCodec
  /// @brief **The standard defines several sets of capabilities.**\n
  /// Which are referred to as profiles, targeting specific classes of applications.
  ///
  ///@{
  enum STREAMCODEC_PROFILE
  {
    /// @brief Unknown codec profile
    CodecProfileUnknown = 0,

    /// @brief If a codec profile is not required
    CodecProfileNotNeeded,

    /// @brief **H264** Baseline Profile (BP, 66)\n
    /// \n
    /// Primarily for low-cost applications that require additional data loss
    /// robustness, this profile is used in some videoconferencing and mobile
    /// applications. This profile includes all features that are supported
    /// in the Constrained Baseline Profile, plus three additional features
    /// that can be used for loss robustness (or for other purposes such as
    /// low-delay multi-point video stream compositing). The importance of
    /// this profile has faded somewhat since the definition of the Constrained
    /// Baseline Profile in 2009. All Constrained Baseline Profile bitstreams
    /// are also considered to be Baseline Profile bitstreams, as these two
    /// profiles share the same profile identifier code value.
    H264CodecProfileBaseline,

    /// @brief **H264** Main Profile (MP, 77)\n
    /// \n
    /// This profile is used for standard-definition digital TV broadcasts that
    /// use the MPEG-4 format as defined in the
    /// [DVB standard](http://www.etsi.org/deliver/etsi_ts/101100_101199/101154/01.09.01_60/ts_101154v010901p.pdf).
    /// It is not, however, used for high-definition television broadcasts, as the
    /// importance of this profile faded when the High Profile was developed
    /// in 2004 for that application.
    H264CodecProfileMain,

    /// @brief **H264** Extended Profile (XP, 88)\n
    /// \n
    /// Intended as the streaming video profile, this profile has relatively high
    /// compression capability and some extra tricks for robustness to data losses
    /// and server stream switching.
    H264CodecProfileExtended,

    /// @brief **H264** High Profile (HiP, 100)\n
    /// \n
    /// The primary profile for broadcast and disc storage applications,
    /// particularly for high-definition television applications (for example,
    /// this is the profile adopted by the [Blu-ray Disc](https://en.wikipedia.org/wiki/Blu-ray_Disc)
    /// storage format and the [DVB](https://en.wikipedia.org/wiki/Digital_Video_Broadcasting)
    /// HDTV broadcast service).
    H264CodecProfileHigh,

    /// @brief **H264** High 10 Profile (Hi10P, 110)\n
    /// \n
    /// Going beyond typical mainstream consumer product capabilities, this
    /// profile builds on top of the High Profile, adding support for up to 10
    /// bits per sample of decoded picture precision.
    H264CodecProfileHigh10,

    /// @brief **H264** High 4:2:2 Profile (Hi422P, 122)\n
    /// \n
    /// Primarily targeting professional applications that use interlaced video,
    /// this profile builds on top of the High 10 Profile, adding support for the
    /// 4:2:2 chroma sampling format while using up to 10 bits per sample of
    /// decoded picture precision.
    H264CodecProfileHigh422,

    /// @brief **H264** High 4:4:4 Predictive Profile (Hi444PP, 244)\n
    /// \n
    /// This profile builds on top of the High 4:2:2 Profile, supporting up to
    /// 4:4:4 chroma sampling, up to 14 bits per sample, and additionally
    /// supporting efficient lossless region coding and the coding of each
    /// picture as three separate color planes.
    H264CodecProfileHigh444Predictive,

    /// @brief **VP9** profile 0\n
    /// \n
    /// There are several variants of the VP9 format (known as "coding profiles"),
    /// which successively allow more features; profile 0 is the basic variant,
    /// requiring the least from a hardware implementation.
    ///
    /// [Color depth](https://en.wikipedia.org/wiki/Color_depth): 8 bit/sample,
    /// [chroma subsampling](https://en.wikipedia.org/wiki/Chroma_subsampling): 4:2:0
    VP9CodecProfile0 = 20,

    /// @brief **VP9** profile 1\n
    /// \n
    /// [Color depth](https://en.wikipedia.org/wiki/Color_depth): 8 bit,
    /// [chroma subsampling](https://en.wikipedia.org/wiki/Chroma_subsampling): 4:2:0, 4:2:2, 4:4:4
    VP9CodecProfile1,

    /// @brief **VP9** profile 2\n
    /// \n
    /// [Color depth](https://en.wikipedia.org/wiki/Color_depth): 10–12 bit,
    /// [chroma subsampling](https://en.wikipedia.org/wiki/Chroma_subsampling): 4:2:0
    VP9CodecProfile2,

    /// @brief **VP9** profile 3\n
    /// \n
    /// [Color depth](https://en.wikipedia.org/wiki/Color_depth): 10–12 bit,
    /// [chroma subsampling](https://en.wikipedia.org/wiki/Chroma_subsampling): 4:2:0, 4:2:2, 4:4:4,
    /// see [VP9 Bitstream & Decoding Process Specification](https://storage.googleapis.com/downloads.webmproject.org/docs/vp9/vp9-bitstream-specification-v0.6-20160331-draft.pdf)
    VP9CodecProfile3,
  };
  ///@}
  //------------------------------------------------------------------------------

#ifdef __cplusplus
} /* extern "C" */
#endif /* __cplusplus */

#endif /* !C_API_ADDONINSTANCE_INPUTSTREAM_STREAMCODEC_H */