MythTV master
Classes | Macros | Typedefs | Functions | Variables
audiooutputca.cpp File Reference
#include <array>
#include <cmath>
#include <thread>
#include <vector>
#include <CoreServices/CoreServices.h>
#include <CoreAudio/CoreAudio.h>
#include <AudioUnit/AudioUnit.h>
#include <AudioToolbox/AudioFormat.h>
#include <AvailabilityMacros.h>
#include "libmythbase/mythcorecontext.h"
#include "libmythbase/mythlogging.h"
#include "audiooutputca.h"
Include dependency graph for audiooutputca.cpp:

Go to the source code of this file.

Classes

class  CoreAudioData
 This holds Core Audio member variables and low-level audio IO methods The name is now a misnomer, it should be CoreAudioPrivate, or CoreAudioMgr. More...
 

Macros

#define LOC   QString("CoreAudio: ")
 
#define OSS_STATUS(x)   UInt32ToFourCC((UInt32*)&(x))
 

Typedefs

using AudioStreamIDVec = std::vector< AudioStreamID >
 
using AudioStreamRangedVec = std::vector< AudioStreamRangedDescription >
 
using AudioValueRangeVec = std::vector< AudioValueRange >
 
using RatesVec = std::vector< int >
 
using ChannelsArr = std::array< bool, CHANNELS_MAX >
 

Functions

char * UInt32ToFourCC (const UInt32 *pVal)
 
QString StreamDescriptionToString (AudioStreamBasicDescription desc)
 
static OSStatus RenderCallbackAnalog (void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData)
 
static OSStatus RenderCallbackSPDIF (AudioDeviceID inDevice, const AudioTimeStamp *inNow, const void *inInputData, const AudioTimeStamp *inInputTime, AudioBufferList *outOutputData, const AudioTimeStamp *inOutputTime, void *inRefCon)
 
template<class AudioDataType >
static void ReorderSmpteToCA (AudioDataType *buf, uint frames)
 
static void ReorderSmpteToCA (void *buf, uint frames, AudioFormat format)
 
static bool IsRateCommon (Float64 inRate)
 

Variables

static constexpr int8_t kMythAudioObjectPropertyElementMain { 0 }
 
static constexpr int CHANNELS_MIN { 1 }
 
static constexpr int CHANNELS_MAX { 8 }
 
static constexpr UInt32 sNumberCommonSampleRates = 15
 
static std::array< Float64, sNumberCommonSampleRatessCommonSampleRates
 

Macro Definition Documentation

◆ LOC

#define LOC   QString("CoreAudio: ")

Definition at line 34 of file audiooutputca.cpp.

◆ OSS_STATUS

#define OSS_STATUS (   x)    UInt32ToFourCC((UInt32*)&(x))

Definition at line 45 of file audiooutputca.cpp.

Typedef Documentation

◆ AudioStreamIDVec

using AudioStreamIDVec = std::vector<AudioStreamID>

Definition at line 39 of file audiooutputca.cpp.

◆ AudioStreamRangedVec

using AudioStreamRangedVec = std::vector<AudioStreamRangedDescription>

Definition at line 40 of file audiooutputca.cpp.

◆ AudioValueRangeVec

using AudioValueRangeVec = std::vector<AudioValueRange>

Definition at line 41 of file audiooutputca.cpp.

◆ ChannelsArr

using ChannelsArr = std::array<bool,CHANNELS_MAX>

Definition at line 43 of file audiooutputca.cpp.

◆ RatesVec

using RatesVec = std::vector<int>

Definition at line 42 of file audiooutputca.cpp.

Function Documentation

◆ IsRateCommon()

static bool IsRateCommon ( Float64  inRate)
static

Definition at line 947 of file audiooutputca.cpp.

Referenced by CoreAudioData::RatesList().

◆ RenderCallbackAnalog()

OSStatus RenderCallbackAnalog ( void *  inRefCon,
AudioUnitRenderActionFlags *  ioActionFlags,
const AudioTimeStamp *  inTimeStamp,
UInt32  inBusNumber,
UInt32  inNumberFrames,
AudioBufferList *  ioData 
)
static

Definition at line 418 of file audiooutputca.cpp.

Referenced by CoreAudioData::OpenAnalog().

◆ RenderCallbackSPDIF()

static OSStatus RenderCallbackSPDIF ( AudioDeviceID  inDevice,
const AudioTimeStamp *  inNow,
const void *  inInputData,
const AudioTimeStamp *  inInputTime,
AudioBufferList *  outOutputData,
const AudioTimeStamp *  inOutputTime,
void *  inRefCon 
)
static

Definition at line 459 of file audiooutputca.cpp.

Referenced by CoreAudioData::OpenSPDIF().

◆ ReorderSmpteToCA() [1/2]

template<class AudioDataType >
static void ReorderSmpteToCA ( AudioDataType *  buf,
uint  frames 
)
inlinestatic

Definition at line 317 of file audiooutputca.cpp.

Referenced by AudioOutputCA::RenderAudio(), and ReorderSmpteToCA().

◆ ReorderSmpteToCA() [2/2]

static void ReorderSmpteToCA ( void *  buf,
uint  frames,
AudioFormat  format 
)
inlinestatic

Definition at line 339 of file audiooutputca.cpp.

◆ StreamDescriptionToString()

QString StreamDescriptionToString ( AudioStreamBasicDescription  desc)

◆ UInt32ToFourCC()

char * UInt32ToFourCC ( const UInt32 *  pVal)

Definition at line 46 of file audiooutputca.cpp.

Referenced by StreamDescriptionToString().

Variable Documentation

◆ CHANNELS_MAX

constexpr int CHANNELS_MAX { 8 }
staticconstexpr

◆ CHANNELS_MIN

constexpr int CHANNELS_MIN { 1 }
staticconstexpr

Definition at line 36 of file audiooutputca.cpp.

Referenced by AudioOutputCA::GetOutputSettings().

◆ kMythAudioObjectPropertyElementMain

constexpr int8_t kMythAudioObjectPropertyElementMain { 0 }
staticconstexpr

◆ sCommonSampleRates

std::array<Float64,sNumberCommonSampleRates> sCommonSampleRates
static
Initial value:
= {
8000.0, 11025.0, 12000.0,
16000.0, 22050.0, 24000.0,
32000.0, 44100.0, 48000.0,
64000.0, 88200.0, 96000.0,
128000.0, 176400.0, 192000.0 }

Definition at line 940 of file audiooutputca.cpp.

Referenced by IsRateCommon(), and CoreAudioData::RatesList().

◆ sNumberCommonSampleRates

constexpr UInt32 sNumberCommonSampleRates = 15
staticconstexpr

Definition at line 939 of file audiooutputca.cpp.

Referenced by IsRateCommon(), and CoreAudioData::RatesList().