12 #ifndef ROC_AUDIO_PCM_DECODER_H_
13 #define ROC_AUDIO_PCM_DECODER_H_
45 const void* frame_data,
52 virtual size_t shift(
size_t n_samples);
59 const size_t n_chans_;
64 const void* frame_data_;
65 size_t frame_byte_size_;
66 size_t frame_bit_off_;
Audio frame decoder interface.
virtual packet::stream_timestamp_t available() const
Get number of samples available for decoding.
static IFrameDecoder * construct(core::IArena &arena, const PcmFormat &pcm_format, const SampleSpec &sample_spec)
Construction function.
virtual size_t shift(size_t n_samples)
Shift samples from current frame.
virtual size_t read(sample_t *samples, size_t n_samples)
Read samples from current frame.
virtual void begin(packet::stream_timestamp_t frame_position, const void *frame_data, size_t frame_size)
Start decoding a new frame.
virtual packet::stream_timestamp_t position() const
Get current stream position.
virtual void end()
Finish decoding current frame.
virtual size_t decoded_sample_count(const void *frame_data, size_t frame_size) const
Get number of samples per channel, that can be decoded from given frame.
PcmDecoder(const PcmFormat &pcm_format, const SampleSpec &sample_spec)
Initialize.
PCM format mapper. Convert between PCM formats.
Sample specification. Describes sample rate and channels.
Base class for non-copyable objects.
Audio frame decoder interface.
float sample_t
Audio sample.
uint32_t stream_timestamp_t
Packet stream timestamp.