|
MythTV master
|
#include <libmythtv/audio/audiooutput.h>
Classes | |
| class | AudioDeviceConfig |
Public Types | |
| using | ADCVect = QVector< AudioDeviceConfig > |
Public Member Functions | |
| AudioOutput ()=default | |
| ~AudioOutput () override | |
| virtual void | Reconfigure (const AudioSettings &settings)=0 |
| bool | isConfigured () const |
| virtual void | SetStretchFactor (float factor) |
| virtual float | GetStretchFactor (void) const |
| virtual int | GetChannels (void) const |
| virtual AudioFormat | GetFormat (void) const |
| virtual int | GetBytesPerFrame (void) const |
| virtual AudioOutputSettings * | GetOutputSettingsCleaned (bool digital=true) |
| virtual AudioOutputSettings * | GetOutputSettingsUsers (bool digital=true) |
| virtual bool | CanPassthrough (int samplerate, int channels, AVCodecID codec, int profile) const |
| virtual bool | CanDownmix (void) const |
| virtual void | SetEffDsp (int dsprate)=0 |
| virtual void | Reset (void)=0 |
| virtual bool | AddFrames (void *buffer, int frames, std::chrono::milliseconds timecode)=0 |
| Add frames to the audiobuffer for playback. More... | |
| virtual bool | AddData (void *buffer, int len, std::chrono::milliseconds timecode, int frames)=0 |
| Add data to the audiobuffer for playback. More... | |
| virtual bool | NeedDecodingBeforePassthrough (void) const |
| virtual std::chrono::milliseconds | LengthLastData (void) const |
| virtual void | SetTimecode (std::chrono::milliseconds timecode)=0 |
| virtual bool | IsPaused (void) const =0 |
| virtual void | Pause (bool paused)=0 |
| virtual void | PauseUntilBuffered (void)=0 |
| virtual void | Drain (void)=0 |
| virtual std::chrono::milliseconds | GetAudiotime (void)=0 |
| virtual std::chrono::milliseconds | GetAudioBufferedTime (void) |
| report amount of audio buffered in milliseconds. More... | |
| virtual void | SetSourceBitrate (int) |
| virtual void | GetBufferStatus (uint &fill, uint &total) |
| virtual void | bufferOutputData (bool y)=0 |
| virtual int | readOutputData (unsigned char *read_buffer, size_t max_length)=0 |
| virtual bool | IsUpmixing (void) |
| virtual bool | ToggleUpmix (void) |
| virtual bool | CanUpmix (void) |
| bool | PulseStatus (void) const |
| virtual bool | CanProcess (AudioFormat fmt) |
| virtual uint32_t | CanProcess (void) |
| int | DecodeAudio (AVCodecContext *ctx, uint8_t *buffer, int &data_size, const AVPacket *pkt) |
| Utility routine. More... | |
| bool | hasVisual (void) |
| void | addVisual (Visualization *v) |
| void | removeVisual (Visualization *v) |
| bool | playPinkNoise (char *frames, int channels, int channel, int count, int bits) |
| Generates and plays pink noise from a speaker for testing. More... | |
| virtual bool | has_optimized_SIMD () |
| Event (Type type) | |
| Event (std::chrono::seconds s, unsigned long w, int b, int f, int p, int c) | |
| Event (QString e) | |
| ~Event () override=default | |
| QString | errorMessage () const |
| const std::chrono::seconds & | elapsedSeconds () const |
| const unsigned long & | writtenBytes () const |
| const int & | bitrate () const |
| const int & | frequency () const |
| const int & | precision () const |
| const int & | channels () const |
| MythEvent * | clone (void) const override |
| Event & | operator= (const Event &other)=delete |
| Event (Event &&)=delete | |
| Event & | operator= (Event &&)=delete |
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 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) |
Static Public Member Functions | |
| 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 Attributes | |
| static const int | kMaxSizeBuffer = 384000 |
| kMaxSizeBuffer is the maximum size of a buffer to be used with DecodeAudio More... | |
| static const QEvent::Type | kPlaying {static_cast<QEvent::Type>(QEvent::registerEventType())} |
| static const QEvent::Type | kBuffering {static_cast<QEvent::Type>(QEvent::registerEventType())} |
| static const QEvent::Type | kInfo {static_cast<QEvent::Type>(QEvent::registerEventType())} |
| static const QEvent::Type | kPaused {static_cast<QEvent::Type>(QEvent::registerEventType())} |
| static const QEvent::Type | kStopped {static_cast<QEvent::Type>(QEvent::registerEventType())} |
| static const QEvent::Type | kError {static_cast<QEvent::Type>(QEvent::registerEventType())} |
Protected Member Functions | |
| void | dispatchError (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 VolumeBase | |
| virtual int | GetVolumeChannel (int channel) const =0 |
| virtual void | SetVolumeChannel (int channel, int volume)=0 |
| virtual void | SetSWVolume (int new_volume, bool save)=0 |
| virtual int | GetSWVolume (void)=0 |
| void | UpdateVolume (void) |
| void | SyncVolume (void) |
| void | SetChannels (int new_channels) |
Protected Attributes | |
| bool | m_isConfigured {false} |
| bool | m_pulseWasSuspended {false} |
| AVFrame * | m_frame {nullptr} |
| std::vector< Visualization * > | m_visuals |
Protected Attributes inherited from VolumeBase | |
| bool | m_internalVol {false} |
Protected Attributes inherited from MythObservable | |
| QMutex * | m_lock {nullptr} |
| QSet< QObject * > | m_listeners |
Private Member Functions | |
| Q_DECLARE_TR_FUNCTIONS (AudioOutput) | |
| Event (const Event &o)=default | |
Private Attributes | |
| QString | m_errorMsg |
| std::chrono::seconds | m_elaspedSeconds {0s} |
| unsigned long | m_writtenBytes {0} |
| int | m_brate {0} |
| int | m_freq {0} |
| int | m_prec {0} |
| int | m_chan {0} |
Definition at line 30 of file audiooutput.h.
| using AudioOutput::ADCVect = QVector<AudioDeviceConfig> |
Definition at line 55 of file audiooutput.h.
|
default |
|
override |
Definition at line 251 of file audiooutput.cpp.
|
overridedefault |
|
pure virtual |
Add data to the audiobuffer for playback.
| [in] | buffer | pointer to audio data |
| [in] | len | length of audio data added |
| [in] | timecode | timecode of the first sample added (in msec) |
| [in] | frames | number of frames added. |
Implemented in AudioOutputAudioTrack, AudioOutputBase, and AudioReencodeBuffer.
Referenced by AudioPlayer::AddAudioData(), MythRAOPConnection::AudioCardLatency(), MythRAOPConnection::ProcessAudio(), and avfDecoder::run().
|
pure virtual |
Add frames to the audiobuffer for playback.
| [in] | buffer | pointer to audio data |
| [in] | frames | number of frames added. |
| [in] | timecode | timecode of the first sample added (in msec) |
Implemented in AudioOutputBase, and AudioReencodeBuffer.
Referenced by playPinkNoise().
| void AudioOutput::addVisual | ( | Visualization * | v | ) |
Definition at line 679 of file audiooutput.cpp.
Referenced by MusicPlayer::addVisual(), AudioPlayer::addVisual(), AudioPlayer::AddVisuals(), and MusicPlayer::openOutputDevice().
|
inline |
Definition at line 251 of file audiooutput.h.
|
pure virtual |
Implemented in AudioOutputBase, and AudioReencodeBuffer.
|
inlinevirtual |
Reimplemented in AudioOutputBase.
Definition at line 92 of file audiooutput.h.
Referenced by AudioPlayer::CanDownmix().
|
virtual |
Reimplemented in AudioOutputBase, and AudioReencodeBuffer.
Definition at line 274 of file audiooutput.cpp.
Referenced by AudioPlayer::CanPassthrough().
|
inlinevirtual |
| fmt | The audio format in question. return true if class can handle AudioFormat All AudioOutput derivative must be able to handle S16 |
Reimplemented in AudioOutputBase.
Definition at line 173 of file audiooutput.h.
Referenced by AudioPlayer::CanProcess().
|
inlinevirtual |
Reimplemented in AudioOutputBase.
Definition at line 179 of file audiooutput.h.
Referenced by DecodeAudio().
|
inlinevirtual |
Reimplemented in AudioOutputBase.
Definition at line 165 of file audiooutput.h.
Referenced by AudioPlayer::CanUpmix().
|
inline |
Definition at line 254 of file audiooutput.h.
Referenced by AudioOutputBase::CanPassthrough(), AudioOutputAudioTrack::GetOutputSettings(), AudioOutputCA::GetOutputSettings(), AudioOutputNULL::GetOutputSettings(), AudioOutputALSA::GetOutputSettings(), OpenAudio(), AudioOutputAudioTrack::OpenDevice(), playPinkNoise(), AudioOutputALSA::SetParameters(), and AudioOutputBase::SetStretchFactorLocked().
|
static |
Definition at line 57 of file audiooutput.cpp.
Referenced by anonymous_namespace{mythfrontend.cpp}::cleanup().
|
inlineoverride |
Definition at line 256 of file audiooutput.h.
| int AudioOutput::DecodeAudio | ( | AVCodecContext * | ctx, |
| uint8_t * | buffer, | ||
| int & | data_size, | ||
| const AVPacket * | pkt | ||
| ) |
Utility routine.
Decode an audio packet, and compact it if data is planar Return negative error code if an error occurred during decoding or the number of bytes consumed from the input AVPacket data_size contains the size of decoded data copied into buffer data decoded will be S16 samples if class instance can't handle HD audio or S16 and above otherwise. No U8 PCM format can be returned
| [in] | ctx | The current audio context information. |
| [in] | buffer | Destination for the copy |
| [out] | data_size | The number of bytes copied. |
| [in] | pkt | The source data packet |
Definition at line 566 of file audiooutput.cpp.
Referenced by AudioPlayer::DecodeAudio(), MythRAOPConnection::decodeAudioPacket(), and avfDecoder::run().
|
protected |
Definition at line 673 of file audiooutput.cpp.
Referenced by AudioOutputJACK::GetOutputSettings(), AudioOutputOSS::GetOutputSettings(), AudioOutputJACK::JackClientClose(), AudioOutputJACK::JackConnectPorts(), AudioOutputALSA::OpenDevice(), AudioOutputJACK::OpenDevice(), AudioOutputOSS::OpenDevice(), AudioOutputWin::OpenDevice(), AudioOutputBase::Reconfigure(), AudioOutputALSA::SetParameters(), AudioOutputOpenSLES::StartPlayer(), AudioOutputALSA::WriteAudio(), and AudioOutputOSS::WriteAudio().
|
protected |
Definition at line 693 of file audiooutput.cpp.
Referenced by AudioOutputBase::AddData().
|
pure virtual |
Implemented in AudioOutputBase, AudioOutputPulseAudio, and AudioReencodeBuffer.
Referenced by AudioPlayer::AddAudioData(), avfDecoder::run(), CdDecoder::run(), and AudioTestThread::run().
|
inline |
Definition at line 249 of file audiooutput.h.
|
inline |
Definition at line 247 of file audiooutput.h.
|
privatedefault |
|
delete |
|
inlineexplicit |
Definition at line 239 of file audiooutput.h.
|
inline |
Definition at line 236 of file audiooutput.h.
|
inlineexplicit |
Definition at line 235 of file audiooutput.h.
Referenced by LyricsView::customEvent(), MusicCommon::customEvent(), MusicPlayer::customEvent(), and MusicPlayer::stop().
|
inline |
Definition at line 252 of file audiooutput.h.
|
inlinevirtual |
report amount of audio buffered in milliseconds.
Reimplemented in AudioOutputBase.
Definition at line 151 of file audiooutput.h.
Referenced by MythPlayerUI::EventLoop(), AudioPlayer::GetAudioBufferedTime(), MythRAOPConnection::ProcessAudio(), MythRAOPConnection::ProcessSync(), and avfDecoder::run().
|
static |
Definition at line 282 of file audiooutput.cpp.
Referenced by AudioConfigSettings::AudioRescan(), AudioConfigSettings::CheckConfiguration(), AudioConfigSettings::CheckPassthrough(), GetOutputList(), and AudioSetupWizard::Init().
|
pure virtual |
Reimplemented in AudioOutputBase.
Definition at line 155 of file audiooutput.h.
Referenced by AudioPlayer::GetBufferStatus(), and CdDecoder::run().
|
inlinevirtual |
Reimplemented in AudioOutputBase.
Definition at line 86 of file audiooutput.h.
Referenced by AudioPlayer::AddAudioData(), and MythRAOPConnection::ProcessAudio().
|
inlinevirtual |
Reimplemented in AudioOutputBase.
Definition at line 84 of file audiooutput.h.
|
inlinevirtual |
Reimplemented in AudioOutputBase.
Definition at line 85 of file audiooutput.h.
|
static |
Definition at line 394 of file audiooutput.cpp.
Referenced by AudioConfigSettings::AudioRescan(), and AudioSetupWizard::Load().
|
virtual |
Reimplemented in AudioOutputBase.
Definition at line 264 of file audiooutput.cpp.
Referenced by GetAudioDeviceConfig().
|
virtual |
Reimplemented in AudioOutputBase.
Definition at line 269 of file audiooutput.cpp.
Referenced by AudioPlayer::GetMaxChannels(), AudioPlayer::GetMaxHDRate(), and TestDigitalFeature().
|
inlinevirtual |
Reimplemented in AudioOutputBase.
Definition at line 83 of file audiooutput.h.
|
inlinevirtual |
Reimplemented in AudioOutputBase.
Definition at line 218 of file audiooutput.h.
Referenced by AvFormatDecoder::DecoderWillDownmix().
|
inline |
Definition at line 203 of file audiooutput.h.
Referenced by AudioOutputBase::AddData().
|
inline |
Definition at line 80 of file audiooutput.h.
Referenced by AudioTestThread::isOutputOpen(), MythRAOPConnection::OpenAudioDevice(), MusicPlayer::openOutputDevice(), and AudioPlayer::ReinitAudio().
|
pure virtual |
Implemented in AudioOutputBase, and AudioReencodeBuffer.
Referenced by MusicPlayer::isPaused(), AudioPlayer::IsPaused(), MusicCommon::keyPressEvent(), MythRAOPConnection::ProcessAudio(), and MusicPlayer::stop().
|
inlinevirtual |
Reimplemented in AudioOutputBase.
Definition at line 163 of file audiooutput.h.
Referenced by AudioPlayer::IsUpmixing().
|
inlinevirtual |
Reimplemented in AudioOutputBase.
Definition at line 138 of file audiooutput.h.
Referenced by AudioPlayer::LengthLastData(), MythRAOPConnection::ProcessAudio(), and AudioTestThread::run().
|
inlinevirtual |
Reimplemented in AudioOutputBase.
Definition at line 131 of file audiooutput.h.
Referenced by AudioPlayer::NeedDecodingBeforePassthrough().
|
static |
Definition at line 86 of file audiooutput.cpp.
|
static |
Definition at line 64 of file audiooutput.cpp.
Referenced by AudioTestThread::AudioTestThread(), GetAudioDeviceConfig(), OpenAudio(), MythRAOPConnection::OpenAudioDevice(), MusicPlayer::openOutputDevice(), and AudioPlayer::ReinitAudio().
|
static |
Definition at line 77 of file audiooutput.cpp.
|
pure virtual |
Implemented in AudioOutputAudioTrack, AudioOutputBase, and AudioReencodeBuffer.
Referenced by AudioTestThread::AudioTestThread(), AudioPlayer::Pause(), MusicPlayer::pause(), MythRAOPConnection::ProcessAudio(), and AudioTestThread::run().
|
pure virtual |
Implemented in AudioOutputBase, and AudioReencodeBuffer.
Referenced by MusicPlayer::decoderHandlerReady(), avfDecoder::initialize(), CdDecoder::initialize(), AudioPlayer::PauseAudioUntilBuffered(), and CdDecoder::seek().
| bool AudioOutput::playPinkNoise | ( | char * | frames, |
| int | channels, | ||
| int | channel, | ||
| int | count, | ||
| int | bits | ||
| ) |
Generates and plays pink noise from a speaker for testing.
| frames | The buffer where the noise will be generated. This is a parameter to allow reusing the same buffer without reallocating memory between calls. |
| channels | The total number of channels in the output. |
| channel | The channel index of the speaker to test. |
| count | The number of frames to generate. |
| bits | 16 or 32; the number of bits per sample in the output. |
Definition at line 752 of file audiooutput.cpp.
Referenced by AudioTestThread::run().
|
inline |
Definition at line 253 of file audiooutput.h.
|
protected |
Definition at line 707 of file audiooutput.cpp.
Referenced by AudioOutputBase::Reconfigure(), and AudioOutputBase::Reset().
|
inline |
Definition at line 166 of file audiooutput.h.
|
private |
|
pure virtual |
Implemented in AudioReencodeBuffer, AudioOutputBase, and AudioOutputNULL.
|
pure virtual |
Implemented in AudioOutputBase, and AudioReencodeBuffer.
Referenced by avfDecoder::initialize(), CdDecoder::initialize(), and AudioPlayer::ReinitAudio().
| void AudioOutput::removeVisual | ( | Visualization * | v | ) |
Definition at line 686 of file audiooutput.cpp.
Referenced by MusicPlayer::removeVisual(), AudioPlayer::removeVisual(), and AudioPlayer::RemoveVisuals().
|
pure virtual |
Implemented in AudioOutputBase, AudioOutputNULL, and AudioReencodeBuffer.
Referenced by MythRAOPConnection::ProcessAudio(), AudioPlayer::Reset(), MythRAOPConnection::ResetAudio(), and MusicPlayer::stop().
|
pure virtual |
Implemented in AudioOutputBase, and AudioReencodeBuffer.
Referenced by AudioPlayer::SetEffDsp().
|
inlinevirtual |
Reimplemented in AudioOutputAudioTrack, and AudioOutputBase.
Definition at line 153 of file audiooutput.h.
Referenced by avfDecoder::initialize(), CdDecoder::initialize(), and AvFormatDecoder::SetupAudioStream().
|
virtual |
Reimplemented in AudioOutputBase.
Definition at line 260 of file audiooutput.cpp.
Referenced by MusicPlayer::setSpeed(), and AudioPlayer::SetStretchFactor().
|
pure virtual |
Implemented in AudioOutputBase, and AudioReencodeBuffer.
Referenced by MusicCommon::seek(), and MusicPlayer::seek().
|
inlinevirtual |
Reimplemented in AudioOutputBase.
Definition at line 164 of file audiooutput.h.
Referenced by AudioPlayer::EnableUpmix(), and MusicCommon::toggleUpmix().
|
inline |
Definition at line 250 of file audiooutput.h.
|
inlinestatic |
Definition at line 260 of file audiooutput.h.
|
inlinestatic |
Definition at line 264 of file audiooutput.h.
|
inlinestatic |
Definition at line 261 of file audiooutput.h.
|
static |
kMaxSizeBuffer is the maximum size of a buffer to be used with DecodeAudio
Definition at line 201 of file audiooutput.h.
Referenced by MythRAOPConnection::AudioCardLatency(), MythRAOPConnection::decodeAudioPacket(), and SPDIFEncoder::SPDIFEncoder().
|
inlinestatic |
Definition at line 262 of file audiooutput.h.
|
inlinestatic |
Definition at line 259 of file audiooutput.h.
|
inlinestatic |
Definition at line 263 of file audiooutput.h.
|
private |
Definition at line 280 of file audiooutput.h.
|
private |
Definition at line 283 of file audiooutput.h.
|
private |
Definition at line 278 of file audiooutput.h.
|
private |
Definition at line 276 of file audiooutput.h.
|
protected |
Definition at line 228 of file audiooutput.h.
Referenced by DecodeAudio(), and ~AudioOutput().
|
private |
Definition at line 281 of file audiooutput.h.
Definition at line 226 of file audiooutput.h.
Referenced by AudioOutputBase::AddData(), AudioOutputBase::GetAudiotime(), AudioOutputBase::Reconfigure(), AudioReencodeBuffer::Reconfigure(), AudioOutputBase::SetAudiotime(), and AudioOutputBase::SetStretchFactorLocked().
|
private |
Definition at line 282 of file audiooutput.h.
Definition at line 227 of file audiooutput.h.
Referenced by OpenAudio(), and ~AudioOutput().
|
protected |
Definition at line 229 of file audiooutput.h.
Referenced by addVisual(), dispatchVisual(), prepareVisuals(), and removeVisual().
|
private |
Definition at line 279 of file audiooutput.h.