template<typename SampleFormat, typename Endianness, typename InterleavingType, typename Constness>
class AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >
A pointer to a block of audio data with a particular encoding.
This object can be used to read and write from blocks of encoded audio samples. To create one, you specify the audio format as a series of template parameters, e.g.
float firstSampleAsFloat = pointer.getAsFloat();
int32 firstSampleAsInt = pointer.getAsInt32();
++pointer;
pointer += 3;
The convertSamples() method lets you copy a range of samples from one format to another, automatically converting its format.
- See also
- AudioData::Converter
template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
template<class OtherPointerType >
void AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::convertSamples |
( |
OtherPointerType |
source, |
|
|
int |
numSamples |
|
) |
| const |
|
inlinenoexcept |
Writes a stream of samples into this pointer from another pointer. This will copy the specified number of samples, converting between formats appropriately.
template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
static int AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::get32BitResolution |
( |
| ) |
|
|
inlinestaticnoexcept |
Returns the accuracy of this format when represented as a 32-bit integer. This is the smallest number above 0 that can be represented in the sample format, converted to a 32-bit range. E,g. if the format is 8-bit, its resolution is 0x01000000; if the format is 24-bit, its resolution is 0x100.
template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
float AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::getAsFloat |
( |
| ) |
const |
|
inlinenoexcept |
Returns the value of the first sample as a floating point value. The value will be in the range -1.0 to 1.0 for integer formats. For floating point formats, the value could be outside that range, although -1 to 1 is the standard range.
template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
Returns the value of the first sample as a 32-bit integer. The value returned will be in the range 0x80000000 to 0x7fffffff, and shorter values will be shifted to fill this range (e.g. if you're reading from 24-bit data, the values will be shifted up by 8 bits when returned here). If the source data is floating point, values beyond -1.0 to 1.0 will be clipped so that -1.0 maps onto -0x7fffffff and 1.0 maps to 0x7fffffff.
template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
void AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::setAsFloat |
( |
float |
newValue | ) |
|
|
inlinenoexcept |
Sets the value of the first sample as a floating point value.
(This method can only be used if the AudioData::NonConst option was used). The value should be in the range -1.0 to 1.0 - for integer formats, values outside that range will be clipped. For floating point formats, any value passed in here will be written directly, although -1 to 1 is the standard range.