libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
aacbitstream.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
13#include <cstdint>
14#include <promeki/namespace.h>
15#include <promeki/buffer.h>
16#include <promeki/bufferview.h>
17#include <promeki/error.h>
18#include <promeki/audiodesc.h>
19
20PROMEKI_NAMESPACE_BEGIN
21
52struct AacDecoderConfig {
54 uint8_t audioObjectType = 2;
55
57 uint8_t samplingFrequencyIndex = 0;
58
61 uint32_t samplingFrequency = 0;
62
64 uint8_t channelConfiguration = 0;
65
67 bool sbr = false;
68
70 bool ps = false;
71
73 uint8_t extensionSamplingFrequencyIndex = 0;
74
76 uint32_t extensionSamplingFrequency = 0;
77
81 Buffer rawConfig;
82
92 static Error parse(const BufferView &payload, AacDecoderConfig &out);
93
103 Error serialize(Buffer &out) const;
104
106 static AacDecoderConfig fromAudioDesc(const AudioDesc &desc);
107
109 AudioDesc toAudioDesc() const;
110
114 static uint32_t indexToFrequency(uint8_t index);
115
118 static uint8_t frequencyToIndex(uint32_t hz);
119};
120
138class AdtsParser {
139 public:
150 static Error strip(const BufferView &in, Buffer &outRaw, AacDecoderConfig &outCfg);
151
153 static bool isAdts(const BufferView &in);
154};
155
156PROMEKI_NAMESPACE_END
157
158#endif // PROMEKI_ENABLE_PROAV