Rialto 0.1
Rialto media pipeline API
Loading...
Searching...
No Matches
MediaCommon.h
Go to the documentation of this file.
1/*
2 * If not stated otherwise in this file or this component's LICENSE file the
3 * following copyright and licenses apply:
4 *
5 * Copyright 2022 Sky UK
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19
20#ifndef FIREBOLT_RIALTO_MEDIA_COMMON_H_
21#define FIREBOLT_RIALTO_MEDIA_COMMON_H_
22
30#include <limits>
31#include <optional>
32#include <stddef.h>
33#include <stdint.h>
34#include <utility>
35#include <vector>
36
37namespace firebolt::rialto
38{
42constexpr int32_t kInvalidSessionId{-1};
43
47constexpr uint32_t kInvalidAudioChannels{0};
48
52constexpr uint32_t kInvalidAudioSampleRate{0};
53
57constexpr int32_t kUndefinedSize{0};
58
62constexpr uint32_t kInvalidLimitBuffering{std::numeric_limits<uint32_t>::max()};
63
67constexpr uint64_t kUndefinedPosition{std::numeric_limits<uint64_t>::max()};
68
73{
74 UNKNOWN,
75 AUDIO,
76 VIDEO,
77 SUBTITLE
78};
79
84{
85 UNKNOWN,
86 AUDIO,
87 VIDEO,
88 VIDEO_DOLBY_VISION,
89 SUBTITLE
90};
91
95enum class AudioEaseType
96{
97 LINEAR = 0,
98 INCUBIC,
99 OUTCUBIC
100};
101
105enum class MediaType
106{
107 UNKNOWN,
108 MSE
109};
110
116{
117 OK,
118 EOS,
119 ERROR,
122};
123
136enum class NetworkState
137{
138 UNKNOWN,
139 IDLE,
140 BUFFERING,
142 BUFFERED,
143 STALLED,
147};
148
159{
160 UNKNOWN,
161 IDLE,
162 PLAYING,
163 PAUSED,
164 SEEKING,
165 SEEK_DONE,
166 STOPPED,
168 FAILURE
169};
170
174enum class Format
175{
176 S8,
177 U8,
178 S16LE,
179 S16BE,
180 U16LE,
181 U16BE,
182 S24_32LE,
183 S24_32BE,
184 U24_32LE,
185 U24_32BE,
186 S32LE,
187 S32BE,
188 U32LE,
189 U32BE,
190 S24LE,
191 S24BE,
192 U24LE,
193 U24BE,
194 S20LE,
195 S20BE,
196 U20LE,
197 U20BE,
198 S18LE,
199 S18BE,
200 U18LE,
201 U18BE,
202 F32LE,
203 F32BE,
204 F64LE,
205 F64BE
206};
207
211enum class Layout
212{
213 INTERLEAVED,
214 NON_INTERLEAVED
215};
216
221{
224 std::vector<uint8_t> codecSpecificConfig;
225 std::optional<Format> format;
226 std::optional<Layout> layout;
227 std::optional<uint64_t> channelMask;
228 std::vector<std::vector<uint8_t>> streamHeader;
229 std::optional<bool>
231};
232
239{
240 OK,
241 NO_SPACE,
242 ERROR
243};
244
250{
253};
254
259{
260 uint32_t maxWidth;
261 uint32_t maxHeight;
262};
263
274
279{
280 uint64_t processed;
281 uint64_t dropped;
282};
283
297
302{
303 UNKNOWN,
304 TEMPORARY,
307};
308
312enum class InitDataType
313{
314 UNKNOWN,
315 CENC,
316 KEY_IDS,
317 WEBM,
318 DRMHEADER
319};
320
324enum class KeyStatus
325{
326 USABLE,
327 EXPIRED,
328 OUTPUT_RESTRICTED,
329 PENDING,
330 INTERNAL_ERROR,
331 RELEASED
332};
333
338{
339 UNDEFINED,
340 NAL,
341 AU
342};
343
347enum class StreamFormat
348{
349 UNDEFINED,
350 RAW,
351 AVC,
352 BYTE_STREAM,
353 HVC1,
354 HEV1
355};
356
360typedef std::vector<std::pair<std::vector<unsigned char>, KeyStatus>> KeyStatusVector;
361
366{
367 uint32_t offsetMain;
368 uint32_t lengthMain;
369 uint32_t offsetWrap;
370 uint32_t lengthWrap;
371};
372
377{
378 uint32_t rate;
379 uint32_t channels;
380 uint32_t sampleSize;
382 bool isSigned;
383 bool isFloat;
384};
385
396
401{
402 UNKNOWN,
403 IDLE,
404 PLAYING,
405 PAUSED,
407 FAILURE
408};
409
413enum class CipherMode
414{
415 UNKNOWN,
416 CENC, /* AES-CTR scheme */
417 CBC1, /* AES-CBC scheme */
418 CENS, /* AES-CTR subsample pattern encryption scheme */
419 CBCS /* AES-CBC subsample pattern encryption scheme */
420};
421
426{
427 int32_t numerator;
428 int32_t denominator;
429};
430
435{
436 BUFFER,
437 STRING
438};
439
444{
445 std::vector<uint8_t> data{};
446 CodecDataType type{CodecDataType::BUFFER};
447};
448
453{
454 UNKNOWN,
455 DECRYPTION, /* Player failed to decrypt a buffer and the frame has been dropped */
456};
457
461enum class EaseType
462{
463 EASE_LINEAR,
464 EASE_IN_CUBIC,
465 EASE_OUT_CUBIC
466};
467
468} // namespace firebolt::rialto
469
470#endif // FIREBOLT_RIALTO_MEDIA_COMMON_H_
AddSegmentStatus
AddSegmentStatus.
Definition MediaCommon.h:239
CodecDataType
Codec data type.
Definition MediaCommon.h:435
EaseType
Ease type for audio volume changes.
Definition MediaCommon.h:462
SegmentAlignment
The alignment of media segment.
Definition MediaCommon.h:338
NetworkState
The Network State.
Definition MediaCommon.h:137
constexpr uint64_t kUndefinedPosition
The value of undefined position.
Definition MediaCommon.h:67
MediaType
The media type of media to be played.
Definition MediaCommon.h:106
SourceConfigType
Shows the types of source configuration.
Definition MediaCommon.h:84
PlaybackError
None fatal asynchronous errors reported by the player.
Definition MediaCommon.h:453
constexpr uint32_t kInvalidAudioSampleRate
The value of an invalid audio sampling rate.
Definition MediaCommon.h:52
StreamFormat
The Stream Format of media segment.
Definition MediaCommon.h:348
constexpr uint32_t kInvalidAudioChannels
The value of an invalid audio channels number.
Definition MediaCommon.h:47
constexpr uint32_t kInvalidLimitBuffering
The value of an invalid limitBuffering.
Definition MediaCommon.h:62
PlaybackState
The Playback State.
Definition MediaCommon.h:159
KeySessionType
The media key session type.
Definition MediaCommon.h:302
WebAudioPlayerState
The Web Audio Player State.
Definition MediaCommon.h:401
CipherMode
Cipher mode for common encryption, see https://www.iso.org/obp/ui/#iso:std:iso-iec:23001:-7:ed-3:v1:e...
Definition MediaCommon.h:414
AudioEaseType
The supported audio ease types.
Definition MediaCommon.h:96
std::vector< std::pair< std::vector< unsigned char >, KeyStatus > > KeyStatusVector
A vector of key ID/key status pairs.
Definition MediaCommon.h:360
constexpr int32_t kUndefinedSize
The value of an undefined size.
Definition MediaCommon.h:57
MediaSourceType
The supported types of media source.
Definition MediaCommon.h:73
constexpr int32_t kInvalidSessionId
The value of an invalid key session.
Definition MediaCommon.h:42
Format
The Format of the audio samples. Used by the raw audio media types.
Definition MediaCommon.h:175
MediaKeyErrorStatus
The error return status for session management methods.
Definition MediaCommon.h:288
MediaSourceStatus
The media source status. This is the status of the source after a read.
Definition MediaCommon.h:116
Layout
The layout of channels within a buffer. Used by the raw audio media types.
Definition MediaCommon.h:212
InitDataType
The init data type.
Definition MediaCommon.h:313
KeyStatus
The key status.
Definition MediaCommon.h:325
Audio specific configuration.
Definition MediaCommon.h:221
std::vector< std::vector< uint8_t > > streamHeader
Definition MediaCommon.h:228
std::vector< uint8_t > codecSpecificConfig
Definition MediaCommon.h:224
uint32_t numberOfChannels
Definition MediaCommon.h:222
std::optional< uint64_t > channelMask
Definition MediaCommon.h:227
std::optional< Layout > layout
Definition MediaCommon.h:226
uint32_t sampleRate
Definition MediaCommon.h:223
std::optional< Format > format
Definition MediaCommon.h:225
std::optional< bool > framed
Definition MediaCommon.h:230
Codec data with type.
Definition MediaCommon.h:444
CodecDataType type
Definition MediaCommon.h:446
std::vector< uint8_t > data
Definition MediaCommon.h:445
Fraction type.
Definition MediaCommon.h:426
int32_t denominator
Definition MediaCommon.h:428
int32_t numerator
Definition MediaCommon.h:427
Information about the shared memory required for writting data.
Definition MediaCommon.h:268
uint32_t mediaDataOffset
Definition MediaCommon.h:271
uint32_t metadataOffset
Definition MediaCommon.h:270
uint32_t maxMetadataBytes
Definition MediaCommon.h:269
uint32_t maxMediaBytes
Definition MediaCommon.h:272
The information provided in a QOS update.
Definition MediaCommon.h:279
uint64_t dropped
Definition MediaCommon.h:281
uint64_t processed
Definition MediaCommon.h:280
A pair describing the clear and encrypted bytes in a sub-sample.
Definition MediaCommon.h:250
size_t numClearBytes
Definition MediaCommon.h:251
size_t numEncryptedBytes
Definition MediaCommon.h:252
Video decoder requirements used to allocate a suitable decoder for a MediaPipeline session.
Definition MediaCommon.h:259
uint32_t maxHeight
Definition MediaCommon.h:261
uint32_t maxWidth
Definition MediaCommon.h:260
Pcm config information.
Definition MediaCommon.h:377
uint32_t rate
Definition MediaCommon.h:378
uint32_t sampleSize
Definition MediaCommon.h:380
bool isSigned
Definition MediaCommon.h:382
bool isFloat
Definition MediaCommon.h:383
uint32_t channels
Definition MediaCommon.h:379
bool isBigEndian
Definition MediaCommon.h:381
Information about the shared memory required for writting data for the web audio playback.
Definition MediaCommon.h:366
uint32_t offsetMain
Definition MediaCommon.h:367
uint32_t lengthMain
Definition MediaCommon.h:368
uint32_t offsetWrap
Definition MediaCommon.h:369
uint32_t lengthWrap
Definition MediaCommon.h:370
Type dependent configuration data.
Definition MediaCommon.h:390
WebAudioPcmConfig pcm
PCM audio configuration.
Definition MediaCommon.h:394