AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness > Class Template Reference
juce_audio_basics » buffers

Used as a template parameter for AudioData::Pointer. More...

Inherits InterleavingType.

## Public Member Functions

| Pointer (typename Constness::VoidType *sourceData) noexcept
| Creates a non-interleaved pointer from some raw data in the appropriate format. More...
| Pointer (typename Constness::VoidType *sourceData, int numInterleaved) noexcept
| Creates a pointer from some raw data in the appropriate format with the specified number of interleaved channels. More...
| Pointer (const Pointer &other) noexcept
| Creates a copy of another pointer. More...
Pointer & | operator= (const Pointer &other) noexcept
float | getAsFloat () const noexcept
| Returns the value of the first sample as a floating point value. More...
void | setAsFloat (float newValue) noexcept
| Sets the value of the first sample as a floating point value. More...
int32 | getAsInt32 () const noexcept
| Returns the value of the first sample as a 32-bit integer. More...
void | setAsInt32 (int32 newValue) noexcept
| Sets the value of the first sample as a 32-bit integer. More...
Pointer & | operator++ () noexcept
| Moves the pointer along to the next sample. More...
Pointer & | operator-- () noexcept
| Moves the pointer back to the previous sample. More...
Pointer & | operator+= (int samplesToJump) noexcept
| Adds a number of samples to the pointer's position. More...
void | convertSamples (Pointer source, int numSamples) const noexcept
| Writes a stream of samples into this pointer from another pointer. More...
template<class OtherPointerType >
void | convertSamples (OtherPointerType source, int numSamples) const noexcept
| Writes a stream of samples into this pointer from another pointer. More...
void | clearSamples (int numSamples) const noexcept
| Sets a number of samples to zero. More...
Range< float > | findMinAndMax (size_t numSamples) const noexcept
| Scans a block of data, returning the lowest and highest levels as floats. More...
void | findMinAndMax (size_t numSamples, float &minValue, float &maxValue) const noexcept
| Scans a block of data, returning the lowest and highest levels as floats. More...
int | getNumInterleavedChannels () const noexcept
| Returns the number of interleaved channels in the format. More...
int | getNumBytesBetweenSamples () const noexcept
| Returns the number of bytes between the start address of each sample. More...
const void * | getRawData () const noexcept
| Returns a pointer to the underlying data. More...

## Static Public Member Functions

static bool | isFloatingPoint () noexcept
| Returns true if the pointer is using a floating-point format. More...
static bool | isBigEndian () noexcept
| Returns true if the format is big-endian. More...
static int | getBytesPerSample () noexcept
| Returns the number of bytes in each sample (ignoring the number of interleaved channels). More...
static int | get32BitResolution () noexcept
| Returns the accuracy of this format when represented as a 32-bit integer. More...

## Detailed Description

### template<typename SampleFormat, typename Endianness, typename InterleavingType, typename Constness>
class AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >

Used as a template parameter for AudioData::Pointer.

Indicates that the samples can only be used for const data.. 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.

// this creates a pointer for reading from a const array of 16-bit little-endian packed samples.
AudioData::Pointer <AudioData::Int16,
AudioData::LittleEndian,
AudioData::NonInterleaved,
AudioData::Const> pointer (someRawAudioData);
// These methods read the sample that is being pointed to
float firstSampleAsFloat = pointer.getAsFloat();
int32 firstSampleAsInt = pointer.getAsInt32();
++pointer; // moves the pointer to the next sample.
pointer += 3; // skips the next 3 samples.

The convertSamples() method lets you copy a range of samples from one format to another, automatically converting its format.

See also
  AudioData::Converter

## Constructor & Destructor Documentation

## Pointer() [1/3]

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::Pointer | ( | typename Constness::VoidType * | sourceData | ) |

noexcept

Creates a non-interleaved pointer from some raw data in the appropriate format.

This constructor is only used if you've specified the AudioData::NonInterleaved option - for interleaved formats, use the constructor that also takes a number of channels.

## Pointer() [2/3]

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::Pointer | ( | typename Constness::VoidType * | sourceData,
|  | int | numInterleaved
| ) |  |

noexcept

Creates a pointer from some raw data in the appropriate format with the specified number of interleaved channels.

For non-interleaved data, use the other constructor.

## Pointer() [3/3]

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::Pointer | ( | const Pointer< SampleFormat, Endianness, InterleavingType, Constness > & | other | ) |

noexcept

Creates a copy of another pointer.

## Member Function Documentation

## operator=()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

Pointer& AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::operator= | ( | const Pointer< SampleFormat, Endianness, InterleavingType, Constness > & | other | ) |

noexcept

## getAsFloat()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

float AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::getAsFloat | ( |  | ) | const

noexcept

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.

Referenced by AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::findMinAndMax().

## setAsFloat()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

void AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::setAsFloat | ( | float | newValue | ) |

noexcept

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.

## getAsInt32()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

int32 AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::getAsInt32 | ( |  | ) | const

noexcept

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.

Referenced by AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::findMinAndMax().

## setAsInt32()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

void AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::setAsInt32 | ( | int32 | newValue | ) |

noexcept

Sets the value of the first sample as a 32-bit integer.

This will be mapped to the range of the format that is being written - see getAsInt32().

## operator++()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

Pointer& AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::operator++ | ( |  | ) |

noexcept

Moves the pointer along to the next sample.

## operator--()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

Pointer& AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::operator-- | ( |  | ) |

noexcept

Moves the pointer back to the previous sample.

## operator+=()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

Pointer& AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::operator+= | ( | int | samplesToJump | ) |

noexcept

Adds a number of samples to the pointer's position.

## convertSamples() [1/2]

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

void AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::convertSamples | ( | Pointer< SampleFormat, Endianness, InterleavingType, Constness > | source,
|  | int | numSamples
| ) |  | const

noexcept

Writes a stream of samples into this pointer from another pointer.

This will copy the specified number of samples, converting between formats appropriately.

Referenced by AudioFormatReader::ReadHelper< DestSampleType, SourceSampleType, SourceEndianness >::read(), and AudioFormatWriter::WriteHelper< DestSampleType, SourceSampleType, DestEndianness >::write().

## convertSamples() [2/2]

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

noexcept

Writes a stream of samples into this pointer from another pointer.

This will copy the specified number of samples, converting between formats appropriately.

## clearSamples()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

void AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::clearSamples | ( | int | numSamples | ) | const

noexcept

Sets a number of samples to zero.

Referenced by AudioFormatReader::ReadHelper< DestSampleType, SourceSampleType, SourceEndianness >::read(), and AudioFormatWriter::WriteHelper< DestSampleType, SourceSampleType, DestEndianness >::write().

## findMinAndMax() [1/2]

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

Range<float> AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::findMinAndMax | ( | size_t | numSamples | ) | const

noexcept

Scans a block of data, returning the lowest and highest levels as floats.

References AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::getAsFloat(), and AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::getAsInt32().

Referenced by MemoryMappedAudioFormatReader::scanMinAndMaxInterleaved().

## findMinAndMax() [2/2]

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

void AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::findMinAndMax | ( | size_t | numSamples,
|  | float & | minValue,
|  | float & | maxValue
| ) |  | const

noexcept

Scans a block of data, returning the lowest and highest levels as floats.

References findMinAndMax(), Range< ValueType >::getEnd(), and Range< ValueType >::getStart().

## isFloatingPoint()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

static bool AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::isFloatingPoint | ( |  | ) |

static noexcept

Returns true if the pointer is using a floating-point format.

## isBigEndian()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

static bool AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::isBigEndian | ( |  | ) |

static noexcept

Returns true if the format is big-endian.

## getBytesPerSample()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

static int AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::getBytesPerSample | ( |  | ) |

static noexcept

Returns the number of bytes in each sample (ignoring the number of interleaved channels).

## getNumInterleavedChannels()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

int AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::getNumInterleavedChannels | ( |  | ) | const

noexcept

Returns the number of interleaved channels in the format.

## getNumBytesBetweenSamples()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

int AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::getNumBytesBetweenSamples | ( |  | ) | const

noexcept

Returns the number of bytes between the start address of each sample.

## get32BitResolution()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

static int AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::get32BitResolution | ( |  | ) |

static noexcept

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.

## getRawData()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >

const void* AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::getRawData | ( |  | ) | const

noexcept

Returns a pointer to the underlying data.

The documentation for this class was generated from the following file:

- juce_AudioDataConverters.h

int32
signed int int32
A platform-independent 32-bit signed integer type.
Definition: juce_MathsFunctions.h:44
AudioData::Pointer
Used as a template parameter for AudioData::Pointer.
Definition: juce_AudioDataConverters.h:355