Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
Loading...
Searching...
No Matches
resampler_reader.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018 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/resampler_reader.h
10//! @brief Resampler.
11
12#ifndef ROC_AUDIO_RESAMPLER_READER_H_
13#define ROC_AUDIO_RESAMPLER_READER_H_
14
15#include "roc_audio/frame.h"
18#include "roc_audio/sample.h"
20#include "roc_core/array.h"
22#include "roc_core/slice.h"
23#include "roc_core/stddefs.h"
24#include "roc_packet/units.h"
25
26namespace roc {
27namespace audio {
28
29//! Resampler element for reading pipeline.
31public:
32 //! Initialize.
34 IResampler& resampler,
35 const SampleSpec& in_sample_spec,
36 const SampleSpec& out_sample_spec);
37
38 //! Check if object is successfully constructed.
39 bool is_valid() const;
40
41 //! Set new resample factor.
42 bool set_scaling(float multiplier);
43
44 //! Read audio frame.
45 virtual bool read(Frame&);
46
47private:
48 bool push_input_();
49 core::nanoseconds_t capture_ts_(Frame& out_frame);
50
51 IResampler& resampler_;
52 IFrameReader& reader_;
53
54 const SampleSpec in_sample_spec_;
55 const SampleSpec out_sample_spec_;
56
57 // timestamp of the last sample +1 of the last frame pushed into resampler
58 core::nanoseconds_t last_in_cts_;
59
60 float scaling_;
61 bool valid_;
62};
63
64} // namespace audio
65} // namespace roc
66
67#endif // ROC_AUDIO_RESAMPLER_READER_H_
Dynamic array.
Audio frame.
Definition frame.h:25
Frame reader interface.
Audio writer interface.
Definition iresampler.h:24
Resampler element for reading pipeline.
ResamplerReader(IFrameReader &reader, IResampler &resampler, const SampleSpec &in_sample_spec, const SampleSpec &out_sample_spec)
Initialize.
bool set_scaling(float multiplier)
Set new resample factor.
virtual bool read(Frame &)
Read audio frame.
bool is_valid() const
Check if object is successfully constructed.
Sample specification. Describes sample rate and channels.
Definition sample_spec.h:30
Base class for non-copyable objects.
Definition noncopyable.h:23
Audio frame.
Frame reader interface.
Audio resampler interface.
int64_t nanoseconds_t
Nanoseconds.
Definition time.h:58
Root namespace.
Non-copyable object.
Audio sample.
Sample specifications.
Slice.
Commonly used types and functions.
Various units used in packets.