StereoFrame Struct

template <typename T> struct QAudioBuffer::StereoFrame

The StereoFrame class provides a simple wrapper for a stereo audio frame. More...

Public Functions

StereoFrame(T leftSample, T rightSample)
StereoFrame()
StereoFrame<T> &operator=(const StereoFrame<T> &other)
T average() const
void clear()

Public Variables

T left
T right

Detailed Description

This templatized structure lets you treat a block of individual samples as an interleaved stereo stream frame. This is most useful when used with the templatized data() functions of QAudioBuffer. Generally the data is accessed as a pointer, so no copying should occur.

There are some predefined instantiations of this template for working with common stereo sample depths in a convenient way.

This frame structure has left and right members for accessing individual channel data.

For example:

// Assuming 'buffer' is an unsigned 16 bit stereo buffer..
QAudioBuffer::S16U *frames = buffer->data<QAudioBuffer::S16U>();
for (int i=0; i < buffer->frameCount(); i++) {
    qSwap(frames[i].left, frames[i].right);
}

See also QAudioBuffer::S8U, QAudioBuffer::S8S, QAudioBuffer::S16S, QAudioBuffer::S16U, and QAudioBuffer::S32F.

Member Function Documentation

StereoFrame::StereoFrame(T leftSample, T rightSample)

Constructs a new frame with the supplied leftSample and rightSample values.

StereoFrame::StereoFrame()

Constructs a new frame with the "silent" value for this sample format (0 for signed formats and floats, 0x8* for unsigned formats).

StereoFrame<T> &StereoFrame::operator=(const StereoFrame<T> &other)

Assigns other to this frame.

T StereoFrame::average() const

Returns the arithmetic average of the left and right samples.

void StereoFrame::clear()

Sets the values of this frame to the "silent" value.

Member Variable Documentation

T StereoFrame::left

This variable holds the left sample

T StereoFrame::right

This variable holds the right sample

© 2023 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.