Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
Loading...
Searching...
No Matches
resampler_writer.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_writer.h
10//! @brief Resampler.
11
12#ifndef ROC_AUDIO_RESAMPLER_WRITER_H_
13#define ROC_AUDIO_RESAMPLER_WRITER_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 writing pipeline.
31public:
32 //! Initialize.
34 IResampler& resampler,
35 core::BufferFactory<sample_t>& buffer_factory,
36 core::nanoseconds_t frame_length,
37 const SampleSpec& in_sample_spec,
38 const SampleSpec& out_sample_spec);
39
40 //! Check if object is successfully constructed.
41 bool valid() const;
42
43 //! Set new resample factor.
44 bool set_scaling(float multiplier);
45
46 //! Read audio frame.
47 virtual void write(Frame&);
48
49private:
50 size_t push_input_(Frame& frame, size_t frame_pos);
51
52 IResampler& resampler_;
53 IFrameWriter& writer_;
54
55 const audio::SampleSpec in_sample_spec_;
56 const audio::SampleSpec out_sample_spec_;
57
58 size_t input_pos_;
59 size_t output_pos_;
60
63
64 bool valid_;
65};
66
67} // namespace audio
68} // namespace roc
69
70#endif // ROC_AUDIO_RESAMPLER_WRITER_H_
Dynamic array.
Audio frame.
Definition frame.h:22
Frame writer interface.
Audio writer interface.
Definition iresampler.h:23
Resampler element for writing pipeline.
virtual void write(Frame &)
Read audio frame.
bool set_scaling(float multiplier)
Set new resample factor.
ResamplerWriter(IFrameWriter &writer, IResampler &resampler, core::BufferFactory< sample_t > &buffer_factory, core::nanoseconds_t frame_length, const SampleSpec &in_sample_spec, const SampleSpec &out_sample_spec)
Initialize.
bool valid() const
Check if object is successfully constructed.
Sample stream specification. Defines sample rate and channel layout.
Definition sample_spec.h:24
Base class for non-copyable objects.
Definition noncopyable.h:23
Audio frame.
Frame writer 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.