Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
Loading...
Searching...
No Matches
pcm_format.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2022 Roc Streaming authors
3 *
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 */
8
9//! @file roc_audio/pcm_format.h
10//! @brief PCM format.
11
12#ifndef ROC_AUDIO_PCM_FORMAT_H_
13#define ROC_AUDIO_PCM_FORMAT_H_
14
15#include "roc_packet/units.h"
16
17namespace roc {
18namespace audio {
19
20//! PCM sample encoding.
22 PcmEncoding_SInt8, //!< 8-bit signed integer.
23 PcmEncoding_UInt8, //!< 8-bit unsigned integer.
24 PcmEncoding_SInt16, //!< 16-bit signed integer.
25 PcmEncoding_UInt16, //!< 16-bit unsigned integer.
26 PcmEncoding_SInt18, //!< 18-bit signed integer (2.25 bytes).
27 PcmEncoding_UInt18, //!< 18-bit unsigned integer (2.25 bytes).
28 PcmEncoding_SInt18_3B, //!< 18-bit signed integer, in low bits of 3-byte container.
29 PcmEncoding_UInt18_3B, //!< 18-bit unsigned integer, in low bits of 3-byte container.
30 PcmEncoding_SInt18_4B, //!< 18-bit signed integer, in low bits of 4-byte container.
31 PcmEncoding_UInt18_4B, //!< 18-bit unsigned integer, in low bits of 4-byte container.
32 PcmEncoding_SInt20, //!< 20-bit signed integer (2.5 bytes).
33 PcmEncoding_UInt20, //!< 20-bit unsigned integer (2.5 bytes).
34 PcmEncoding_SInt20_3B, //!< 20-bit signed integer, in low bits of 3-byte container.
35 PcmEncoding_UInt20_3B, //!< 20-bit unsigned integer, in low bits of 3-byte container.
36 PcmEncoding_SInt20_4B, //!< 20-bit signed integer, in low bits of 4-byte container.
37 PcmEncoding_UInt20_4B, //!< 20-bit unsigned integer, in low bits of 4-byte container.
38 PcmEncoding_SInt24, //!< 24-bit signed integer (3 bytes).
39 PcmEncoding_UInt24, //!< 24-bit unsigned integer (3 bytes).
40 PcmEncoding_SInt24_4B, //!< 24-bit signed integer, in low bits of 4-byte container.
41 PcmEncoding_UInt24_4B, //!< 24-bit unsigned integer, in low bits of 4-byte container.
42 PcmEncoding_SInt32, //!< 32-bit signed integer.
43 PcmEncoding_UInt32, //!< 32-bit unsigned integer.
44 PcmEncoding_SInt64, //!< 64-bit signed integer.
45 PcmEncoding_UInt64, //!< 64-bit unsigned integer.
46 PcmEncoding_Float32, //!< 32-bit IEEE-754 float in range [-1.0; +1.0].
47 PcmEncoding_Float64 //!< 64-bit IEEE-754 float in range [-1.0; +1.0].
48};
49
50//! PCM sample endianess.
52 PcmEndian_Native, //!< Endian native to current CPU.
53 PcmEndian_Big, //!< Big endian.
54 PcmEndian_Little //!< Little endian.
55};
56
57//! PCM format description.
58struct PcmFormat {
59 //! Sample encoding.
61
62 //! Sample endian.
64
65 //! Initialize.
67 : encoding()
68 , endian() {
69 }
70
71 //! Initialize.
73 : encoding(enc)
74 , endian(end) {
75 }
76};
77
78} // namespace audio
79} // namespace roc
80
81#endif // ROC_AUDIO_PCM_FORMAT_H_
PcmEncoding
PCM sample encoding.
Definition: pcm_format.h:21
@ PcmEncoding_SInt32
32-bit signed integer.
Definition: pcm_format.h:42
@ PcmEncoding_UInt18
18-bit unsigned integer (2.25 bytes).
Definition: pcm_format.h:27
@ PcmEncoding_UInt24_4B
24-bit unsigned integer, in low bits of 4-byte container.
Definition: pcm_format.h:41
@ PcmEncoding_SInt18
18-bit signed integer (2.25 bytes).
Definition: pcm_format.h:26
@ PcmEncoding_UInt20_3B
20-bit unsigned integer, in low bits of 3-byte container.
Definition: pcm_format.h:35
@ PcmEncoding_SInt16
16-bit signed integer.
Definition: pcm_format.h:24
@ PcmEncoding_UInt32
32-bit unsigned integer.
Definition: pcm_format.h:43
@ PcmEncoding_UInt24
24-bit unsigned integer (3 bytes).
Definition: pcm_format.h:39
@ PcmEncoding_SInt20
20-bit signed integer (2.5 bytes).
Definition: pcm_format.h:32
@ PcmEncoding_UInt16
16-bit unsigned integer.
Definition: pcm_format.h:25
@ PcmEncoding_SInt18_3B
18-bit signed integer, in low bits of 3-byte container.
Definition: pcm_format.h:28
@ PcmEncoding_Float32
32-bit IEEE-754 float in range [-1.0; +1.0].
Definition: pcm_format.h:46
@ PcmEncoding_SInt64
64-bit signed integer.
Definition: pcm_format.h:44
@ PcmEncoding_SInt24
24-bit signed integer (3 bytes).
Definition: pcm_format.h:38
@ PcmEncoding_SInt20_3B
20-bit signed integer, in low bits of 3-byte container.
Definition: pcm_format.h:34
@ PcmEncoding_SInt24_4B
24-bit signed integer, in low bits of 4-byte container.
Definition: pcm_format.h:40
@ PcmEncoding_Float64
64-bit IEEE-754 float in range [-1.0; +1.0].
Definition: pcm_format.h:47
@ PcmEncoding_UInt18_4B
18-bit unsigned integer, in low bits of 4-byte container.
Definition: pcm_format.h:31
@ PcmEncoding_UInt64
64-bit unsigned integer.
Definition: pcm_format.h:45
@ PcmEncoding_SInt20_4B
20-bit signed integer, in low bits of 4-byte container.
Definition: pcm_format.h:36
@ PcmEncoding_UInt20
20-bit unsigned integer (2.5 bytes).
Definition: pcm_format.h:33
@ PcmEncoding_UInt20_4B
20-bit unsigned integer, in low bits of 4-byte container.
Definition: pcm_format.h:37
@ PcmEncoding_UInt18_3B
18-bit unsigned integer, in low bits of 3-byte container.
Definition: pcm_format.h:29
@ PcmEncoding_SInt18_4B
18-bit signed integer, in low bits of 4-byte container.
Definition: pcm_format.h:30
@ PcmEncoding_SInt8
8-bit signed integer.
Definition: pcm_format.h:22
@ PcmEncoding_UInt8
8-bit unsigned integer.
Definition: pcm_format.h:23
PcmEndian
PCM sample endianess.
Definition: pcm_format.h:51
@ PcmEndian_Big
Big endian.
Definition: pcm_format.h:53
@ PcmEndian_Little
Little endian.
Definition: pcm_format.h:54
@ PcmEndian_Native
Endian native to current CPU.
Definition: pcm_format.h:52
Root namespace.
PCM format description.
Definition: pcm_format.h:58
PcmFormat(PcmEncoding enc, PcmEndian end)
Initialize.
Definition: pcm_format.h:72
PcmEndian endian
Sample endian.
Definition: pcm_format.h:63
PcmEncoding encoding
Sample encoding.
Definition: pcm_format.h:60
PcmFormat()
Initialize.
Definition: pcm_format.h:66
Various units used in packets.