OpenShot Library | libopenshot-audio  0.2.0
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 >:

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.
 
Pointeroperator= (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...
 
Pointeroperator++ () noexcept
 Moves the pointer along to the next sample.
 
Pointeroperator-- () noexcept
 Moves the pointer back to the previous sample.
 
Pointeroperator+= (int samplesToJump) noexcept
 Adds a number of samples to the pointer's position.
 
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.
 
Range< float > findMinAndMax (size_t numSamples) const noexcept
 Scans a block of data, returning the lowest and highest levels as floats.
 
void findMinAndMax (size_t numSamples, float &minValue, float &maxValue) const noexcept
 Scans a block of data, returning the lowest and highest levels as floats.
 
int getNumInterleavedChannels () const noexcept
 Returns the number of interleaved channels in the format.
 
int getNumBytesBetweenSamples () const noexcept
 Returns the number of bytes between the start address of each sample.
 
const void * getRawData () const noexcept
 Returns a pointer to the underlying data.
 

Static Public Member Functions

static bool isFloatingPoint () noexcept
 Returns true if the pointer is using a floating-point format.
 
static bool isBigEndian () noexcept
 Returns true if the format is big-endian.
 
static int getBytesPerSample () noexcept
 Returns the number of bytes in each sample (ignoring the number of interleaved channels).
 
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 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

Definition at line 358 of file juce_AudioDataConverters.h.

Constructor & Destructor Documentation

◆ Pointer() [1/2]

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.

Definition at line 366 of file juce_AudioDataConverters.h.

◆ Pointer() [2/2]

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.

Definition at line 377 of file juce_AudioDataConverters.h.

Member Function Documentation

◆ 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.

Definition at line 400 of file juce_AudioDataConverters.h.

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

◆ 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.

Definition at line 409 of file juce_AudioDataConverters.h.

◆ 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.

Definition at line 422 of file juce_AudioDataConverters.h.

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

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

Definition at line 427 of file juce_AudioDataConverters.h.

◆ 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.

Definition at line 446 of file juce_AudioDataConverters.h.

◆ 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.

Definition at line 463 of file juce_AudioDataConverters.h.

◆ 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.

Definition at line 567 of file juce_AudioDataConverters.h.


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