MythTV
master
|
#include <audiooutputalsa.h>
Public Member Functions | |
AudioOutputALSA (const AudioSettings &settings) | |
~AudioOutputALSA () override | |
int | GetVolumeChannel (int channel) const override |
void | SetVolumeChannel (int channel, int volume) override |
Public Member Functions inherited from AudioOutputBase | |
AudioOutputBase (const AudioSettings &settings) | |
~AudioOutputBase () override | |
Destructor. More... | |
AudioOutputSettings * | GetOutputSettingsCleaned (bool digital=true) override |
Returns capabilities supported by the audio device amended to take into account the digital audio options (AC3, DTS, E-AC3 and TrueHD) More... | |
AudioOutputSettings * | GetOutputSettingsUsers (bool digital=false) override |
Returns capabilities supported by the audio device amended to take into account the digital audio options (AC3, DTS, E-AC3 and TrueHD) as well as the user settings. More... | |
void | Reconfigure (const AudioSettings &settings) override |
(Re)Configure AudioOutputBase More... | |
void | SetEffDsp (int dsprate) override |
Set the effective DSP rate. More... | |
void | SetStretchFactor (float factor) override |
Set the timestretch factor. More... | |
float | GetStretchFactor (void) const override |
Get the timetretch factor. More... | |
int | GetChannels (void) const override |
AudioFormat | GetFormat (void) const override |
int | GetBytesPerFrame (void) const override |
bool | CanPassthrough (int samplerate, int channels, AVCodecID codec, int profile) const override |
Test if we can output digital audio and if sample rate is supported. More... | |
bool | CanDownmix (void) const override |
bool | IsUpmixing (void) override |
Source is currently being upmixed. More... | |
bool | ToggleUpmix (void) override |
Toggle between stereo and upmixed 5.1 if the source material is stereo. More... | |
bool | CanUpmix (void) override |
Upmixing of the current source is available if requested. More... | |
bool | CanProcess (AudioFormat) override |
uint32_t | CanProcess (void) override |
void | Reset (void) override |
Reset the audiobuffer, timecode and mythmusic visualisation. More... | |
void | SetSWVolume (int new_volume, bool save) override |
Set the volume for software volume control. More... | |
int | GetSWVolume (void) override |
Get the volume for software volume control. More... | |
bool | AddFrames (void *buffer, int frames, std::chrono::milliseconds timecode) override |
Add frames to the audiobuffer and perform any required processing. More... | |
bool | AddData (void *buffer, int len, std::chrono::milliseconds timecode, int frames) override |
Add data to the audiobuffer and perform any required processing. More... | |
bool | NeedDecodingBeforePassthrough () const override |
std::chrono::milliseconds | LengthLastData (void) const override |
void | SetTimecode (std::chrono::milliseconds timecode) override |
Set the timecode of the samples most recently added to the audiobuffer. More... | |
bool | IsPaused (void) const override |
void | Pause (bool paused) override |
void | PauseUntilBuffered (void) override |
void | Drain (void) override |
Block until all available frames have been written to the device. More... | |
std::chrono::milliseconds | GetAudiotime (void) override |
Calculate the timecode of the samples that are about to become audible. More... | |
std::chrono::milliseconds | GetAudioBufferedTime (void) override |
Get the difference in timecode between the samples that are about to become audible and the samples most recently added to the audiobuffer, i.e. More... | |
virtual void | Status (void) |
Report status via an OutputEvent. More... | |
void | SetSourceBitrate (int rate) override |
Set the bitrate of the source material, reported in periodic OutputEvents. More... | |
void | GetBufferStatus (uint &fill, uint &total) override |
Fill in the number of bytes in the audiobuffer and the total size of the audiobuffer. More... | |
void | bufferOutputData (bool y) override |
int | readOutputData (unsigned char *read_buffer, size_t max_length) override |
Public Member Functions inherited from AudioOutput | |
AudioOutput ()=default | |
~AudioOutput () override | |
QString | GetError (void) const |
QString | GetWarning (void) const |
bool | PulseStatus (void) const |
virtual int | DecodeAudio (AVCodecContext *ctx, uint8_t *buffer, int &data_size, const AVPacket *pkt) |
Utility routine. More... | |
Public Member Functions inherited from VolumeBase | |
VolumeBase () | |
virtual | ~VolumeBase ()=default |
void | SWVolume (bool set) |
bool | SWVolume (void) const |
virtual uint | GetCurrentVolume (void) const |
virtual void | SetCurrentVolume (int value) |
virtual void | AdjustCurrentVolume (int change) |
virtual void | ToggleMute (void) |
virtual MuteState | GetMuteState (void) const |
virtual MuteState | SetMuteState (MuteState) |
Public Member Functions inherited from OutputListeners | |
OutputListeners ()=default | |
~OutputListeners () override=default | |
bool | hasVisual (void) |
void | addVisual (MythTV::Visual *v) |
void | removeVisual (MythTV::Visual *v) |
QMutex * | mutex () |
void | setBufferSize (unsigned int sz) |
unsigned int | bufferSize () const |
Public Member Functions inherited from MythObservable | |
MythObservable () | |
virtual | ~MythObservable () |
void | addListener (QObject *listener) |
Add a listener to the observable. More... | |
void | removeListener (QObject *listener) |
Remove a listener to the observable. More... | |
void | dispatch (const MythEvent &event) |
Dispatch an event to all listeners. More... | |
bool | hasListeners (void) |
Public Member Functions inherited from MThread | |
MThread (const QString &objectName) | |
Standard constructor. More... | |
MThread (const QString &objectName, QRunnable *runnable) | |
Use this constructor if you want the default run() method to run the QRunnable's run() method instead of entering the Qt event loop. More... | |
virtual | ~MThread () |
MThread (const MThread &)=delete | |
MThread & | operator= (const MThread &)=delete |
void | RunProlog (void) |
Sets up a thread, call this if you reimplement run(). More... | |
void | RunEpilog (void) |
Cleans up a thread's resources, call this if you reimplement run(). More... | |
QThread * | qthread (void) |
Returns the thread, this will always return the same pointer no matter how often you restart the thread. More... | |
void | setObjectName (const QString &name) |
QString | objectName (void) const |
void | setPriority (QThread::Priority priority) |
QThread::Priority | priority (void) const |
bool | isFinished (void) const |
bool | isRunning (void) const |
void | setStackSize (uint stackSize) |
uint | stackSize (void) const |
void | exit (int retcode=0) |
Use this to exit from the thread if you are using a Qt event loop. More... | |
void | start (QThread::Priority p=QThread::InheritPriority) |
Tell MThread to start running the thread in the near future. More... | |
void | terminate (void) |
Kill a thread unsafely. More... | |
void | quit (void) |
calls exit(0) More... | |
bool | wait (std::chrono::milliseconds time=std::chrono::milliseconds::max()) |
Wait for the MThread to exit, with a maximum timeout. More... | |
Static Public Member Functions | |
static QMap< QString, QString > * | GetDevices (const char *type) |
Static Public Member Functions inherited from AudioOutputBase | |
static const char * | quality_string (int q) |
Static Public Member Functions inherited from AudioOutput | |
static void | Cleanup (void) |
static ADCVect * | GetOutputList (void) |
static AudioDeviceConfig * | GetAudioDeviceConfig (QString &name, const QString &desc, bool willsuspendpa=false) |
static AudioOutput * | OpenAudio (const QString &main_device, const QString &passthru_device, AudioFormat format, int channels, AVCodecID codec, int samplerate, AudioOutputSource source, bool set_initial_vol, bool passthru, int upmixer_startup=0, AudioOutputSettings *custom=nullptr) |
static AudioOutput * | OpenAudio (AudioSettings &settings, bool willsuspendpa=true) |
static AudioOutput * | OpenAudio (const QString &main_device, const QString &passthru_device=QString(), bool willsuspendpa=true) |
Static Public Member Functions inherited from VolumeBase | |
static MuteState | NextMuteState (MuteState) |
Static Public Member Functions inherited from MThread | |
static void | ThreadSetup (const QString &name) |
This is to be called on startup in those few threads that haven't been ported to MThread. More... | |
static void | ThreadCleanup (void) |
This is to be called on exit in those few threads that haven't been ported to MThread. More... | |
static void | Cleanup (void) |
This will print out all the running threads, call exit(1) on each and then wait up to 5 seconds total for all the threads to exit. More... | |
static void | GetAllThreadNames (QStringList &list) |
static void | GetAllRunningThreadNames (QStringList &list) |
Protected Member Functions | |
bool | OpenDevice (void) override |
void | CloseDevice (void) override |
void | WriteAudio (unsigned char *aubuf, int size) override |
int | GetBufferedOnSoundcard (void) const override |
Return the size in bytes of frames currently in the audio buffer adjusted with the audio playback latency. More... | |
AudioOutputSettings * | GetOutputSettings (bool passthrough) override |
Protected Member Functions inherited from AudioOutputBase | |
void | InitSettings (const AudioSettings &settings) |
void | KillAudio (void) |
Kill the output thread and cleanup. More... | |
virtual bool | StartOutputThread (void) |
virtual void | StopOutputThread (void) |
int | GetAudioData (uchar *buffer, int buf_size, bool full_buffer, volatile uint *local_raud=nullptr) |
Copy frames from the audiobuffer into the buffer provided. More... | |
void | OutputAudioLoop (void) |
Run in the output thread, write frames to the output device as they become available and there's space in the device buffer to write them. More... | |
void | run () override |
Main routine for the output thread. More... | |
int | CheckFreeSpace (int &frames) |
Check that there's enough space in the audiobuffer to write the provided number of frames. More... | |
int | audiolen () const |
Get the number of bytes in the audiobuffer. More... | |
int | audiofree () const |
Get the free space in the audiobuffer in bytes. More... | |
int | audioready () const |
Get the scaled number of bytes in the audiobuffer, i.e. More... | |
void | SetStretchFactorLocked (float factor) |
Set the timestretch factor. More... | |
std::chrono::milliseconds | GetBaseAudBufTimeCode () const |
bool | usesSpdif () const |
Protected Member Functions inherited from AudioOutput | |
void | Error (const QString &msg) |
void | SilentError (const QString &msg) |
void | Warn (const QString &msg) |
void | ClearError (void) |
void | ClearWarning (void) |
Protected Member Functions inherited from VolumeBase | |
void | UpdateVolume (void) |
void | SyncVolume (void) |
void | SetChannels (int new_channels) |
Protected Member Functions inherited from OutputListeners | |
void | error (const QString &e) |
void | dispatchVisual (uchar *b, unsigned long b_len, std::chrono::milliseconds timecode, int chan, int prec) |
void | prepareVisuals () |
Protected Member Functions inherited from MThread | |
int | exec (void) |
Enters the qt event loop. call exit or quit to exit thread. More... | |
Private Member Functions | |
int | TryOpenDevice (int open_mode, bool try_ac3) |
int | GetPCMInfo (int &card, int &device, int &subdevice) |
bool | IncPreallocBufferSize (int requested, int buffer_time) |
int | SetParameters (snd_pcm_t *handle, snd_pcm_format_t format, uint channels, uint rate, uint buffer_time, uint period_time) |
Set the various ALSA audio parameters. More... | |
bool | OpenMixer (void) |
Static Private Member Functions | |
static QByteArray * | GetELD (int card, int device, int subdevice) |
Private Attributes | |
snd_pcm_t * | m_pcmHandle {nullptr} |
int | m_pbufSize {-1} |
int | m_card {-1} |
int | m_device {-1} |
int | m_subdevice {-1} |
QMutex | m_killAudioLock |
QString | m_lastDevice |
struct { | |
QString device | |
QString control | |
snd_mixer_t * handle { nullptr } | |
snd_mixer_elem_t * elem { nullptr } | |
long volmin { 0L } | |
long volmax { 0L } | |
long volrange { 0L } | |
} | m_mixer |
Additional Inherited Members | |
Public Types inherited from AudioOutput | |
using | ADCVect = QVector< AudioDeviceConfig > |
Static Public Attributes inherited from AudioOutputBase | |
static const uint | kAudioSRCInputSize = 16384 |
static const uint | kAudioRingBufferSize = 10239936U |
Audio Buffer Size – should be divisible by 32,24,16,12,10,8,6,4,2.. More... | |
Static Public Attributes inherited from AudioOutput | |
static const int | kMaxSizeBuffer = 384000 |
kMaxSizeBuffer is the maximum size of a buffer to be used with DecodeAudio More... | |
Protected Types inherited from AudioOutputBase | |
enum | { QUALITY_DISABLED = -1, QUALITY_LOW = 0, QUALITY_MEDIUM = 1, QUALITY_HIGH = 2 } |
Static Protected Member Functions inherited from MThread | |
static void | setTerminationEnabled (bool enabled=true) |
static void | usleep (std::chrono::microseconds time) |
template<typename R , typename P > | |
static std::enable_if_t< std::chrono::treat_as_floating_point< R >::value, void > | usleep (std::chrono::duration< R, P > time) |
Protected Attributes inherited from AudioOutputBase | |
int | m_channels {-1} |
AVCodecID | m_codec {AV_CODEC_ID_NONE} |
int | m_bytesPerFrame {0} |
int | m_outputBytesPerFrame {0} |
AudioFormat | m_format {FORMAT_NONE} |
AudioFormat | m_outputFormat {FORMAT_NONE} |
int | m_sampleRate {-1} |
int | m_effDsp {0} |
int | m_fragmentSize {0} |
long | m_soundcardBufferSize {0} |
QString | m_mainDevice |
QString | m_passthruDevice |
bool | m_discreteDigital {false} |
bool | m_passthru {false} |
bool | m_enc {false} |
bool | m_reEnc {false} |
float | m_stretchFactor {1.0F} |
int | m_effStretchFactor {100000} |
AudioOutputSource | m_source |
bool | m_killAudio {false} |
bool | m_pauseAudio {false} |
bool | m_actuallyPaused {false} |
bool | m_wasPaused {false} |
bool | m_unpauseWhenReady {false} |
bool | m_setInitialVol |
bool | m_bufferOutputDataForUse {false} |
int | m_configuredChannels {0} |
int | m_maxChannels {0} |
int | m_srcQuality {QUALITY_MEDIUM} |
long | m_sourceBitRate {-1} |
int | m_sourceSampleRate {0} |
Protected Attributes inherited from AudioOutput | |
QString | m_lastError |
QString | m_lastWarn |
bool | m_pulseWasSuspended {false} |
AVFrame * | m_frame {nullptr} |
Protected Attributes inherited from VolumeBase | |
bool | m_internalVol {false} |
Protected Attributes inherited from MythObservable | |
QMutex * | m_lock {nullptr} |
QSet< QObject * > | m_listeners |
Protected Attributes inherited from MThread | |
MThreadInternal * | m_thread {nullptr} |
QRunnable * | m_runnable {nullptr} |
bool | m_prologExecuted {true} |
bool | m_epilogExecuted {true} |
Definition at line 12 of file audiooutputalsa.h.
|
explicit |
Definition at line 31 of file audiooutputalsa.cpp.
|
override |
Definition at line 99 of file audiooutputalsa.cpp.
|
overridevirtual |
Implements VolumeBase.
Definition at line 833 of file audiooutputalsa.cpp.
|
overridevirtual |
Implements VolumeBase.
Definition at line 866 of file audiooutputalsa.cpp.
Referenced by OpenMixer().
|
static |
Definition at line 994 of file audiooutputalsa.cpp.
Referenced by AudioOutput::GetOutputList(), and GetOutputSettings().
|
overrideprotectedvirtual |
Implements AudioOutputBase.
Definition at line 452 of file audiooutputalsa.cpp.
|
overrideprotectedvirtual |
Implements AudioOutputBase.
Definition at line 503 of file audiooutputalsa.cpp.
Referenced by OpenDevice().
|
overrideprotectedvirtual |
Implements AudioOutputBase.
Definition at line 549 of file audiooutputalsa.cpp.
|
overrideprotectedvirtual |
Return the size in bytes of frames currently in the audio buffer adjusted with the audio playback latency.
Implements AudioOutputBase.
Definition at line 635 of file audiooutputalsa.cpp.
|
overrideprotectedvirtual |
Reimplemented from AudioOutputBase.
Definition at line 317 of file audiooutputalsa.cpp.
|
private |
Definition at line 104 of file audiooutputalsa.cpp.
Referenced by GetOutputSettings(), and OpenDevice().
|
private |
Definition at line 139 of file audiooutputalsa.cpp.
Referenced by GetOutputSettings(), and IncPreallocBufferSize().
|
private |
Definition at line 179 of file audiooutputalsa.cpp.
Referenced by SetParameters().
|
inlineprivate |
Set the various ALSA audio parameters.
Returns: < 0 : an error occurred 0 : Succeeded
0 : Buffer timelength returned by ALSA which is less than what we asked for
Definition at line 661 of file audiooutputalsa.cpp.
Referenced by OpenDevice().
|
staticprivate |
Definition at line 237 of file audiooutputalsa.cpp.
Referenced by GetOutputSettings().
|
private |
Definition at line 887 of file audiooutputalsa.cpp.
Referenced by OpenDevice().
|
private |
Definition at line 43 of file audiooutputalsa.h.
Referenced by CloseDevice(), GetBufferedOnSoundcard(), GetOutputSettings(), GetPCMInfo(), OpenDevice(), OpenMixer(), TryOpenDevice(), and WriteAudio().
|
private |
Definition at line 44 of file audiooutputalsa.h.
Referenced by IncPreallocBufferSize(), and SetParameters().
|
private |
Definition at line 45 of file audiooutputalsa.h.
Referenced by GetPCMInfo().
|
private |
Definition at line 46 of file audiooutputalsa.h.
Referenced by GetPCMInfo().
|
private |
Definition at line 47 of file audiooutputalsa.h.
Referenced by GetPCMInfo().
|
private |
Definition at line 48 of file audiooutputalsa.h.
|
private |
Definition at line 49 of file audiooutputalsa.h.
Referenced by GetOutputSettings(), OpenDevice(), and TryOpenDevice().
QString AudioOutputALSA::device |
Definition at line 52 of file audiooutputalsa.h.
Referenced by GetELD(), GetOutputSettings(), GetPCMInfo(), and IncPreallocBufferSize().
QString AudioOutputALSA::control |
Definition at line 53 of file audiooutputalsa.h.
Referenced by GetELD().
snd_mixer_t* AudioOutputALSA::handle { nullptr } |
Definition at line 54 of file audiooutputalsa.h.
Referenced by SetParameters().
snd_mixer_elem_t* AudioOutputALSA::elem { nullptr } |
Definition at line 55 of file audiooutputalsa.h.
Referenced by GetELD().
long AudioOutputALSA::volmin { 0L } |
Definition at line 56 of file audiooutputalsa.h.
long AudioOutputALSA::volmax { 0L } |
Definition at line 57 of file audiooutputalsa.h.
long AudioOutputALSA::volrange { 0L } |
Definition at line 58 of file audiooutputalsa.h.
struct { ... } AudioOutputALSA::m_mixer |
Referenced by CloseDevice(), GetVolumeChannel(), OpenMixer(), and SetVolumeChannel().