JUCE  v5.4.1-191-g0ab5e696f
JUCE API
Looking for a senior C++ dev?
I'm looking for work. Hire me!
juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness > Class Template Reference

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

#include <juce_AudioDataConverters.h>

Inheritance diagram for juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >:
Collaboration diagram for juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >:

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...
 
void clearSamples (int numSamples) const noexcept
 Sets a number of samples to zero. 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...
 
Range< floatfindMinAndMax (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...
 
float getAsFloat () const noexcept
 Returns 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...
 
int getNumBytesBetweenSamples () const noexcept
 Returns the number of bytes between the start address of each sample. More...
 
int getNumInterleavedChannels () const noexcept
 Returns the number of interleaved channels in the format. More...
 
const void * getRawData () const noexcept
 Returns a pointer to the underlying data. More...
 
Pointeroperator++ () noexcept
 Moves the pointer along to the next sample. More...
 
Pointeroperator+= (int samplesToJump) noexcept
 Adds a number of samples to the pointer's position. More...
 
Pointeroperator-- () noexcept
 Moves the pointer back to the previous sample. More...
 
Pointeroperator= (const Pointer &other) noexcept
 
void setAsFloat (float newValue) noexcept
 Sets the value of the first sample as a floating point value. More...
 
void setAsInt32 (int32 newValue) noexcept
 Sets the value of the first sample as a 32-bit integer. More...
 

Static Public Member Functions

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

Private Member Functions

void advance () noexcept
 
Pointer operator++ (int)
 
Pointer operator-- (int)
 

Private Attributes

SampleFormat data
 

Detailed Description

template<typename SampleFormat, typename Endianness, typename InterleavingType, typename Constness>
class juce::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 >
juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::Pointer ( typename Constness::VoidType *  sourceData)
inlinenoexcept

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 >
juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::Pointer ( typename Constness::VoidType *  sourceData,
int  numInterleaved 
)
inlinenoexcept

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 >
juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::Pointer ( const Pointer< SampleFormat, Endianness, InterleavingType, Constness > &  other)
inlinenoexcept

Creates a copy of another pointer.

Member Function Documentation

◆ advance()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
void juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::advance ( )
inlineprivatenoexcept

◆ clearSamples()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
void juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::clearSamples ( int  numSamples) const
inlinenoexcept

◆ convertSamples() [1/2]

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
void juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::convertSamples ( Pointer< SampleFormat, Endianness, InterleavingType, Constness >  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.

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

◆ convertSamples() [2/2]

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
template<class OtherPointerType >
void juce::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.

References juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::advance(), and juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::data.

◆ findMinAndMax() [1/2]

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
Range<float> juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::findMinAndMax ( size_t  numSamples) const
inlinenoexcept

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

Referenced by juce::MemoryMappedAudioFormatReader::scanMinAndMaxInterleaved().

◆ findMinAndMax() [2/2]

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
void juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::findMinAndMax ( size_t  numSamples,
float minValue,
float maxValue 
) const
inlinenoexcept

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

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

◆ get32BitResolution()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
static int juce::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.

◆ getAsFloat()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
float juce::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.

◆ getAsInt32()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
int32 juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::getAsInt32 ( ) const
inlinenoexcept

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.

◆ getBytesPerSample()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
static int juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::getBytesPerSample ( )
inlinestaticnoexcept

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

◆ getNumBytesBetweenSamples()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
int juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::getNumBytesBetweenSamples ( ) const
inlinenoexcept

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

◆ getNumInterleavedChannels()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
int juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::getNumInterleavedChannels ( ) const
inlinenoexcept

Returns the number of interleaved channels in the format.

◆ getRawData()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
const void* juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::getRawData ( ) const
inlinenoexcept

Returns a pointer to the underlying data.

◆ isBigEndian()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
static bool juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::isBigEndian ( )
inlinestaticnoexcept

Returns true if the format is big-endian.

◆ isFloatingPoint()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
static bool juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::isFloatingPoint ( )
inlinestaticnoexcept

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

◆ operator++() [1/2]

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
Pointer& juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::operator++ ( )
inlinenoexcept

Moves the pointer along to the next sample.

◆ operator++() [2/2]

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
Pointer juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::operator++ ( int  )
private

◆ operator+=()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
Pointer& juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::operator+= ( int  samplesToJump)
inlinenoexcept

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

◆ operator--() [1/2]

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
Pointer& juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::operator-- ( )
inlinenoexcept

Moves the pointer back to the previous sample.

◆ operator--() [2/2]

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
Pointer juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::operator-- ( int  )
private

◆ operator=()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
Pointer& juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::operator= ( const Pointer< SampleFormat, Endianness, InterleavingType, Constness > &  other)
inlinenoexcept

◆ setAsFloat()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
void juce::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.

◆ setAsInt32()

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
void juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::setAsInt32 ( int32  newValue)
inlinenoexcept

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().

Member Data Documentation

◆ data

template<typename SampleFormat , typename Endianness , typename InterleavingType , typename Constness >
SampleFormat juce::AudioData::Pointer< SampleFormat, Endianness, InterleavingType, Constness >::data
private

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