Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
Loading...
Searching...
No Matches
pcm_encoder.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2015 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_encoder.h
10//! @brief PCM encoder.
11
12#ifndef ROC_AUDIO_PCM_ENCODER_H_
13#define ROC_AUDIO_PCM_ENCODER_H_
14
19
20namespace roc {
21namespace audio {
22
23//! PCM encoder.
24class PcmEncoder : public IFrameEncoder, public core::NonCopyable<> {
25public:
26 //! Initialize.
27 PcmEncoder(const PcmFormat& pcm_format, const SampleSpec& sample_spec);
28
29 //! Get encoded frame size in bytes for given number of samples per channel.
30 virtual size_t encoded_byte_count(size_t num_samples) const;
31
32 //! Start encoding a new frame.
33 virtual void begin(void* frame, size_t frame_size);
34
35 //! Encode samples.
36 virtual size_t write(const sample_t* samples, size_t n_samples);
37
38 //! Finish encoding frame.
39 virtual void end();
40
41private:
42 PcmMapper pcm_mapper_;
43 const size_t n_chans_;
44
45 void* frame_data_;
46 size_t frame_byte_size_;
47 size_t frame_bit_off_;
48};
49
50} // namespace audio
51} // namespace roc
52
53#endif // ROC_AUDIO_PCM_ENCODER_H_
Audio frame encoder interface.
virtual size_t write(const sample_t *samples, size_t n_samples)
Encode samples.
virtual size_t encoded_byte_count(size_t num_samples) const
Get encoded frame size in bytes for given number of samples per channel.
PcmEncoder(const PcmFormat &pcm_format, const SampleSpec &sample_spec)
Initialize.
virtual void begin(void *frame, size_t frame_size)
Start encoding a new frame.
virtual void end()
Finish encoding frame.
PCM format mapper. Convert between PCM formats.
Definition: pcm_mapper.h:23
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 encoder interface.
float sample_t
Audio sample.
Definition: sample.h:22
Root namespace.
Non-copyable object.
PCM format mapper.
Sample specifications.
PCM format description.
Definition: pcm_format.h:58