libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
audioresampler.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 <promeki/list.h>
14#include <promeki/namespace.h>
15#include <promeki/audiodesc.h>
16#include <promeki/duration.h>
17#include <promeki/error.h>
18#include <promeki/result.h>
19#include <promeki/enums.h>
20#include <promeki/uniqueptr.h>
21
22PROMEKI_NAMESPACE_BEGIN
23
55class AudioResampler {
56 public:
58 using UPtr = UniquePtr<AudioResampler>;
59
61 using ProcessResult = Result<size_t>;
62
64 AudioResampler();
65
67 ~AudioResampler();
68
69 AudioResampler(const AudioResampler &) = delete;
70 AudioResampler &operator=(const AudioResampler &) = delete;
71
73 AudioResampler(AudioResampler &&) noexcept;
74
76 AudioResampler &operator=(AudioResampler &&) noexcept;
77
81 bool isValid() const;
82
97 Error setup(unsigned int channels, const SrcQuality &quality = SrcQuality::SincMedium);
98
102 unsigned int channels() const;
103
107 SrcQuality quality() const;
108
112 double ratio() const;
113
128 Error setRatio(double ratio);
129
139 Error setRatio(float inputRate, float outputRate);
140
156 Error process(const float *dataIn, long inputFrames, float *dataOut, long outputFrames, long &inputUsed,
157 long &outputGen, bool endOfInput = false);
158
167 Error reset();
168
197 int filterDelayInputFrames() const;
198
212 Duration filterDelay(double inputRate) const;
213
214 private:
215 struct Impl;
216 using ImplPtr = UniquePtr<Impl>;
217 ImplPtr _impl;
218};
219
220PROMEKI_NAMESPACE_END
221
222#endif // PROMEKI_ENABLE_PROAV