MythTV master
Macros | Typedefs | Functions | Variables
audiooutputbase.cpp File Reference
#include <algorithm>
#include <array>
#include <cmath>
#include <limits>
#include <unistd.h>
#include <sys/time.h>
#include <SoundTouch.h>
#include <QtGlobal>
#include <QMutexLocker>
#include "libmythbase/compat.h"
#include "libmythbase/mythconfig.h"
#include "libmythbase/mythcorecontext.h"
#include "libmythbase/mythlogging.h"
#include "audioconvert.h"
#include "audiooutputbase.h"
#include "audiooutputdigitalencoder.h"
#include "freesurround.h"
#include "spdifencoder.h"
Include dependency graph for audiooutputbase.cpp:

Go to the source code of this file.

Macros

#define LOC   QString("AOBase: ")
 
#define WPOS   (&m_audioBuffer[org_waud])
 
#define RPOS   (&m_audioBuffer[m_raud])
 
#define ABUF   (m_audioBuffer.data())
 
#define STST   soundtouch::SAMPLETYPE
 
#define LRPOS   (&m_audioBuffer[*local_raud])
 

Typedefs

using two_speaker_ratio = std::array< float, 2 >
 
using two_speaker_set = std::array< two_speaker_ratio, 8 >
 
using six_speaker_ratio = std::array< float, 6 >
 
using six_speaker_set = std::array< six_speaker_ratio, 8 >
 

Functions

static constexpr bool IS_VALID_UPMIX_CHANNEL (int ch)
 
static int DownmixFrames (int channels_in, int channels_out, float *dst, const float *src, int frames)
 
static void adjustVolume (void *buf, int len, int volume, bool music, bool upmix)
 Adjust the volume of samples. More...
 
template<class AudioDataType >
static void tMuteChannel (AudioDataType *buffer, int channels, int ch, int frames)
 
static void muteChannel (int obits, int channels, int ch, void *buffer, int bytes)
 Mute individual channels through mono->stereo duplication. More...
 

Variables

static constexpr int UPMIX_CHANNEL_MASK { (1<<1)|(1<<2)|(1<<5)|(1<<7) }
 
static const float m6db = 0.5
 
static const float m3db = 0.7071067811865476F
 
static const float mm3db = -0.7071067811865476F
 
static const float msqrt_1_3 = -0.577350269189626F
 
static const float sqrt_2_3 = 0.816496580927726F
 
static const float sqrt_2_3by3db = 0.577350269189626F
 
static const float msqrt_1_3bym3db = 0.408248290463863F
 
static const std::array< two_speaker_set, 8 > stereo_matrix
 
static const std::array< six_speaker_set, 3 > s51_matrix
 

Macro Definition Documentation

◆ ABUF

#define ABUF   (m_audioBuffer.data())

Definition at line 46 of file audiooutputbase.cpp.

◆ LOC

#define LOC   QString("AOBase: ")

Definition at line 39 of file audiooutputbase.cpp.

◆ LRPOS

#define LRPOS   (&m_audioBuffer[*local_raud])

◆ RPOS

#define RPOS   (&m_audioBuffer[m_raud])

Definition at line 45 of file audiooutputbase.cpp.

◆ STST

#define STST   soundtouch::SAMPLETYPE

Definition at line 47 of file audiooutputbase.cpp.

◆ WPOS

#define WPOS   (&m_audioBuffer[org_waud])

Definition at line 44 of file audiooutputbase.cpp.

Typedef Documentation

◆ six_speaker_ratio

using six_speaker_ratio = std::array<float,6>

Definition at line 157 of file audiooutputbase.cpp.

◆ six_speaker_set

using six_speaker_set = std::array<six_speaker_ratio,8>

Definition at line 158 of file audiooutputbase.cpp.

◆ two_speaker_ratio

using two_speaker_ratio = std::array<float,2>

Definition at line 84 of file audiooutputbase.cpp.

◆ two_speaker_set

using two_speaker_set = std::array<two_speaker_ratio,8>

Definition at line 85 of file audiooutputbase.cpp.

Function Documentation

◆ adjustVolume()

static void adjustVolume ( void *  buf,
int  len,
int  volume,
bool  music,
bool  upmix 
)
static

Adjust the volume of samples.

Makes a crude attempt to normalise the relative volumes of PCM from mythmusic, PCM from video and upmixed AC-3

Definition at line 288 of file audiooutputbase.cpp.

Referenced by AudioOutputBase::AddData().

◆ DownmixFrames()

static int DownmixFrames ( int  channels_in,
int  channels_out,
float *  dst,
const float *  src,
int  frames 
)
static

Definition at line 197 of file audiooutputbase.cpp.

Referenced by AudioOutputBase::AddData().

◆ IS_VALID_UPMIX_CHANNEL()

static constexpr bool IS_VALID_UPMIX_CHANNEL ( int  ch)
staticconstexpr

Definition at line 51 of file audiooutputbase.cpp.

Referenced by AudioOutputBase::Reconfigure().

◆ muteChannel()

static void muteChannel ( int  obits,
int  channels,
int  ch,
void *  buffer,
int  bytes 
)
static

Mute individual channels through mono->stereo duplication.

Mute given channel (left or right) by copying right or left channel over.

Definition at line 366 of file audiooutputbase.cpp.

Referenced by AudioOutputBase::GetAudioData().

◆ tMuteChannel()

template<class AudioDataType >
static void tMuteChannel ( AudioDataType *  buffer,
int  channels,
int  ch,
int  frames 
)
static

Definition at line 347 of file audiooutputbase.cpp.

Referenced by muteChannel().

Variable Documentation

◆ m3db

const float m3db = 0.7071067811865476F
static

Definition at line 77 of file audiooutputbase.cpp.

◆ m6db

const float m6db = 0.5
static

Definition at line 76 of file audiooutputbase.cpp.

◆ mm3db

const float mm3db = -0.7071067811865476F
static

Definition at line 78 of file audiooutputbase.cpp.

◆ msqrt_1_3

const float msqrt_1_3 = -0.577350269189626F
static

Definition at line 79 of file audiooutputbase.cpp.

◆ msqrt_1_3bym3db

const float msqrt_1_3bym3db = 0.408248290463863F
static

Definition at line 82 of file audiooutputbase.cpp.

◆ s51_matrix

const std::array<six_speaker_set,3> s51_matrix
static

Definition at line 159 of file audiooutputbase.cpp.

Referenced by DownmixFrames().

◆ sqrt_2_3

const float sqrt_2_3 = 0.816496580927726F
static

Definition at line 80 of file audiooutputbase.cpp.

◆ sqrt_2_3by3db

const float sqrt_2_3by3db = 0.577350269189626F
static

Definition at line 81 of file audiooutputbase.cpp.

◆ stereo_matrix

const std::array<two_speaker_set,8> stereo_matrix
static

Definition at line 86 of file audiooutputbase.cpp.

Referenced by DownmixFrames().

◆ UPMIX_CHANNEL_MASK

constexpr int UPMIX_CHANNEL_MASK { (1<<1)|(1<<2)|(1<<5)|(1<<7) }
staticconstexpr

Definition at line 50 of file audiooutputbase.cpp.

Referenced by IS_VALID_UPMIX_CHANNEL().