Implement AudioReaders module
Implement AudioReaders.
Class AudioReader provides an interface for reading audio files.
The AudioReader provides two actual operations on the input file: it can either analyze the file via acquire_size()
or actually process the file via process_file()
, which yields the actual calculation results. An AudioReader is a SampleProvider and hence a SampleProcessor can be attached to it.
An AudioReader internally holds a concrete instance of AudioReaderImpl. AudioReaderImpl can be subclassed to implement the capabilities of an AudioReader.
The concrete reading of a given audio file is implemented by the subclasses of AudioReaderImpl. An AudioReaderImpl can be set to a block size, that may or may not refer to a buffer size, depending on the actual implementation.
CDDAValidator provides a uniform implementation of checking sample size, sampling rate and number of channels of an input audio file for CDDA conformity.
AudioValidator wraps a CDDAValidator with error tracking for easy registering validation functionality to an AudioReaderImpl. It provides default implementations for CDDA testing. Subclasses are supposed to add validation for the concrete format and codec.
Validation failures are reported as InvalidAudioException.
BigEndianBytes and LittleEndianBytes decode short sequences of single chars to integers.
Classes
- class arcsdec::v_1_0_0::AudioReader
- Read audio files and provide the decoded samples.
- class arcsdec::v_1_0_0::AudioReaderImpl
- Abstract base class for AudioReader implementations.
- class arcsdec::v_1_0_0::AudioValidator
- Abstract base class for validation handlers for AudioReaderImpls.
- struct arcsdec::v_1_0_0::BigEndianBytes
- Service: interpret 2 or 4 big-endian bytes as integer.
- struct arcsdec::v_1_0_0::CDDAValidator
- Service: verify the CDDA conformity of values.
- class arcsdec::v_1_0_0::DefaultValidator
- Abstract base implementation of AudioValidator.
- class arcsdec::v_1_0_0::InvalidAudioException
- Reports validation failure on audio data.
- struct arcsdec::v_1_0_0::LittleEndianBytes
- Service: interpret 2 or 4 little-endian bytes as integer.
Functions
-
template<typename INT>static auto cast_to_int32(const INT value) -> int32_t constexpr
- Perform a safe cast to int32_t.
Variables
- const int32_t MAX_SAMPLES_TO_READ
- Maximum number of PCM 32 bit samples to read from a file.
Function documentation
#include <audioreader.hpp>
template<typename INT>
static int32_t cast_to_int32(const INT value) constexpr
Perform a safe cast to int32_t.
Template parameters | |
---|---|
INT | The type to cast |
Parameters | |
value in | The value to cast |
Variable documentation
const int32_t MAX_SAMPLES_TO_READ
#include <audioreader.hpp>
Maximum number of PCM 32 bit samples to read from a file.
This is equivalent to the product of the maximal lba block address the redbook standard accepts (449.999 frames) and the number of samples per lba frame (588).
The numerical value is 264.599.412.