#include <audiooutputbase.h>
Public Member Functions | |
| AudioOutputBase (const AudioSettings &settings) | |
| virtual | ~AudioOutputBase () |
| Destructor. | |
| AudioOutputSettings * | GetOutputSettingsCleaned (bool digital=true) |
| Returns capabilities supported by the audio device amended to take into account the digital audio options (AC3, DTS, E-AC3 and TrueHD). | |
| AudioOutputSettings * | GetOutputSettingsUsers (bool digital=false) |
| 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. | |
| virtual void | Reconfigure (const AudioSettings &settings) |
| (Re)Configure AudioOutputBase | |
| virtual void | SetEffDsp (int dsprate) |
| Set the effective DSP rate. | |
| virtual void | SetStretchFactor (float factor) |
| Set the timestretch factor. | |
| virtual float | GetStretchFactor (void) const |
| Get the timetretch factor. | |
| virtual int | GetChannels (void) const |
| virtual AudioFormat | GetFormat (void) const |
| virtual int | GetBytesPerFrame (void) const |
| virtual bool | CanPassthrough (int samplerate, int channels, int codec, int profile) const |
| Test if we can output digital audio and if sample rate is supported. | |
| virtual bool | CanDownmix (void) const |
| virtual bool | IsUpmixing (void) |
| Source is currently being upmixed. | |
| virtual bool | ToggleUpmix (void) |
| Toggle between stereo and upmixed 5.1 if the source material is stereo. | |
| virtual bool | CanUpmix (void) |
| Upmixing of the current source is available if requested. | |
| virtual void | Reset (void) |
| Reset the audiobuffer, timecode and mythmusic visualisation. | |
| void | SetSWVolume (int new_volume, bool save) |
| Set the volume for software volume control. | |
| int | GetSWVolume (void) |
| Get the volume for software volume control. | |
| virtual bool | AddFrames (void *buffer, int frames, int64_t timecode) |
| Add frames to the audiobuffer and perform any required processing. | |
| virtual bool | AddData (void *buffer, int len, int64_t timecode, int frames) |
| Add data to the audiobuffer and perform any required processing. | |
| virtual bool | NeedDecodingBeforePassthrough () const |
| NeedDecodingBeforePassthrough: returns true if AudioOutput class can determine the length in millisecond of native audio frames bitstreamed passed to AddData. | |
| virtual int64_t | LengthLastData (void) const |
| LengthLastData: returns the length of the last data added in millisecond. | |
| virtual void | SetTimecode (int64_t timecode) |
| Set the timecode of the samples most recently added to the audiobuffer. | |
| virtual bool | IsPaused (void) const |
| virtual void | Pause (bool paused) |
| void | PauseUntilBuffered (void) |
| virtual void | Drain (void) |
| Block until all available frames have been written to the device. | |
| virtual int64_t | GetAudiotime (void) |
| Calculate the timecode of the samples that are about to become audible. | |
| virtual int64_t | GetAudioBufferedTime (void) |
| 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. | |
| virtual void | Status (void) |
| Report status via an OutputEvent. | |
| virtual void | SetSourceBitrate (int rate) |
| Set the bitrate of the source material, reported in periodic OutputEvents. | |
| virtual void | GetBufferStatus (uint &fill, uint &total) |
| Fill in the number of bytes in the audiobuffer and the total size of the audiobuffer. | |
| virtual void | bufferOutputData (bool y) |
| virtual int | readOutputData (unsigned char *read_buffer, int max_length) |
Static Public Attributes | |
| static const uint | kAudioSRCInputSize = 16384 |
| static const uint | kAudioRingBufferSize = 3072000u |
| Audio Buffer Size -- should be divisible by 32,24,16,12,10,8,6,4,2.. | |
Protected Member Functions | |
| void | InitSettings (const AudioSettings &settings) |
| virtual bool | OpenDevice (void)=0 |
| virtual void | CloseDevice (void)=0 |
| virtual void | WriteAudio (uchar *aubuf, int size)=0 |
| virtual int | GetBufferedOnSoundcard (void) const =0 |
| Return the size in bytes of frames currently in the audio buffer adjusted with the audio playback latency. | |
| virtual AudioOutputSettings * | GetOutputSettings (bool digital) |
| void | KillAudio (void) |
| Kill the output thread and cleanup. | |
| virtual bool | StartOutputThread (void) |
| virtual void | StopOutputThread (void) |
| int | GetAudioData (uchar *buffer, int buf_size, bool fill_buffer, volatile uint *local_raud=NULL) |
| Copy frames from the audiobuffer into the buffer provided. | |
| 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. | |
| virtual void | run () |
| Main routine for the output thread. | |
| int | CheckFreeSpace (int &frames) |
| Check that there's enough space in the audiobuffer to write the provided number of frames. | |
| int | audiolen () |
| Get the number of bytes in the audiobuffer. | |
| int | audiofree () |
| Get the free space in the audiobuffer in bytes. | |
| int | audioready () |
| Get the scaled number of bytes in the audiobuffer, i.e. | |
| void | SetStretchFactorLocked (float factor) |
| Set the timestretch factor. | |
| int | GetBaseAudBufTimeCode () const |
Protected Attributes | |
| int | channels |
| int | codec |
| int | bytes_per_frame |
| int | output_bytes_per_frame |
| AudioFormat | format |
| AudioFormat | output_format |
| int | samplerate |
| int | effdsp |
| int | fragment_size |
| long | soundcard_buffer_size |
| QString | main_device |
| QString | passthru_device |
| bool | m_discretedigital |
| bool | passthru |
| bool | enc |
| bool | reenc |
| float | stretchfactor |
| int | eff_stretchfactor |
| AudioOutputSource | source |
| bool | killaudio |
| bool | pauseaudio |
| bool | actually_paused |
| bool | was_paused |
| bool | unpause_when_ready |
| bool | set_initial_vol |
| bool | buffer_output_data_for_use |
| int | configured_channels |
| int | max_channels |
| int | src_quality |
Private Member Functions | |
| bool | SetupPassthrough (int codec, int codec_profile, int &samplerate_tmp, int &channels_tmp) |
| AudioOutputSettings * | OutputSettings (bool digital=true) |
| int | CopyWithUpmix (char *buffer, int frames, uint &org_waud) |
| Copy frames into the audiobuffer, upmixing en route if necessary. | |
| void | SetAudiotime (int frames, int64_t timecode) |
| Set the timecode of the top of the ringbuffer Exclude all other processing elements as they dont vary between AddData calls. | |
Private Attributes | |
| AudioOutputSettings * | output_settingsraw |
| AudioOutputSettings * | output_settings |
| AudioOutputSettings * | output_settingsdigitalraw |
| AudioOutputSettings * | output_settingsdigital |
| bool | need_resampler |
| SRC_STATE * | src_ctx |
| soundtouch::SoundTouch * | pSoundStretch |
| AudioOutputDigitalEncoder * | encoder |
| FreeSurround * | upmixer |
| int | source_channels |
| int | source_samplerate |
| int | source_bytes_per_frame |
| bool | upmix_default |
| bool | needs_upmix |
| bool | needs_downmix |
| int | surround_mode |
| float | old_stretchfactor |
| int | volume |
| QString | volumeControl |
| bool | processing |
| int64_t | frames_buffered |
| bool | audio_thread_exists |
| QMutex | audio_buflock |
| Writes to the audiobuffer, reconfigures and audiobuffer resets can only take place while holding this lock. | |
| QMutex | avsync_lock |
| must hold avsync_lock to read or write 'audiotime' and 'audiotime_updated' | |
| int64_t | audiotime |
| timecode of audio leaving the soundcard (same units as timecodes) | |
| volatile uint | raud |
| Audio circular buffer. | |
| volatile uint | waud |
| int64_t | audbuf_timecode |
| timecode of audio most recently placed into buffer | |
| AsyncLooseLock | reset_active |
| QMutex | killAudioLock |
| long | current_seconds |
| long | source_bitrate |
| float * | src_in |
| SRC_DATA | src_data |
| uint | memory_corruption_test0 |
| float | src_in_buf [kAudioSRCInputSize+16] |
| uint | memory_corruption_test1 |
| float * | src_out |
| int | kAudioSRCOutputSize |
| uint | memory_corruption_test2 |
| uchar | audiobuffer [kAudioRingBufferSize] |
| main audio buffer | |
| uint | memory_corruption_test3 |
| uint | m_configure_succeeded |
| int64_t | m_length_last_data |
| SPDIFEncoder * | m_spdifenc |
Definition at line 51 of file audiooutputbase.h.
| AudioOutputBase::AudioOutputBase | ( | const AudioSettings & | settings | ) |
Definition at line 51 of file audiooutputbase.cpp.
| AudioOutputBase::~AudioOutputBase | ( | ) | [virtual] |
Destructor.
You must kill the output thread via KillAudio() prior to destruction
Definition at line 135 of file audiooutputbase.cpp.
| AudioOutputSettings * AudioOutputBase::GetOutputSettingsCleaned | ( | bool | digital = true |
) | [virtual] |
Returns capabilities supported by the audio device amended to take into account the digital audio options (AC3, DTS, E-AC3 and TrueHD).
Reimplemented from AudioOutput.
Definition at line 194 of file audiooutputbase.cpp.
Referenced by GetOutputSettingsUsers().
| AudioOutputSettings * AudioOutputBase::GetOutputSettingsUsers | ( | bool | digital = false |
) | [virtual] |
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.
Reimplemented from AudioOutput.
Definition at line 224 of file audiooutputbase.cpp.
Referenced by InitSettings().
| void AudioOutputBase::Reconfigure | ( | const AudioSettings & | orig_settings | ) | [virtual] |
(Re)Configure AudioOutputBase
Must be called from concrete subclasses
Implements AudioOutput.
Definition at line 468 of file audiooutputbase.cpp.
Referenced by AudioOutputALSA::AudioOutputALSA(), AudioOutputCA::AudioOutputCA(), AudioOutputDX::AudioOutputDX(), AudioOutputJACK::AudioOutputJACK(), AudioOutputNULL::AudioOutputNULL(), AudioOutputOSS::AudioOutputOSS(), AudioOutputPulseAudio::AudioOutputPulseAudio(), AudioOutputWin::AudioOutputWin(), and ToggleUpmix().
| void AudioOutputBase::SetEffDsp | ( | int | dsprate | ) | [virtual] |
Set the effective DSP rate.
Equal to 100 * samples per second NuppelVideo sets this every sync frame to achieve av sync
Implements AudioOutput.
Definition at line 944 of file audiooutputbase.cpp.
| void AudioOutputBase::SetStretchFactor | ( | float | factor | ) | [virtual] |
Set the timestretch factor.
Reimplemented from AudioOutput.
Definition at line 357 of file audiooutputbase.cpp.
| float AudioOutputBase::GetStretchFactor | ( | void | ) | const [virtual] |
Get the timetretch factor.
Reimplemented from AudioOutput.
Definition at line 366 of file audiooutputbase.cpp.
| virtual int AudioOutputBase::GetChannels | ( | void | ) | const [inline, virtual] |
Reimplemented from AudioOutput.
Definition at line 69 of file audiooutputbase.h.
| virtual AudioFormat AudioOutputBase::GetFormat | ( | void | ) | const [inline, virtual] |
Reimplemented from AudioOutput.
Definition at line 70 of file audiooutputbase.h.
| virtual int AudioOutputBase::GetBytesPerFrame | ( | void | ) | const [inline, virtual] |
Reimplemented from AudioOutput.
Definition at line 71 of file audiooutputbase.h.
| bool AudioOutputBase::CanPassthrough | ( | int | samplerate, | |
| int | channels, | |||
| int | codec, | |||
| int | profile | |||
| ) | const [virtual] |
Test if we can output digital audio and if sample rate is supported.
Reimplemented from AudioOutput.
Definition at line 249 of file audiooutputbase.cpp.
| virtual bool AudioOutputBase::CanDownmix | ( | void | ) | const [inline, virtual] |
Reimplemented from AudioOutput.
Definition at line 75 of file audiooutputbase.h.
| bool AudioOutputBase::IsUpmixing | ( | void | ) | [virtual] |
Source is currently being upmixed.
Implements AudioOutput.
Definition at line 374 of file audiooutputbase.cpp.
| bool AudioOutputBase::ToggleUpmix | ( | void | ) | [virtual] |
Toggle between stereo and upmixed 5.1 if the source material is stereo.
Implements AudioOutput.
Definition at line 382 of file audiooutputbase.cpp.
| bool AudioOutputBase::CanUpmix | ( | void | ) | [virtual] |
Upmixing of the current source is available if requested.
Implements AudioOutput.
Definition at line 399 of file audiooutputbase.cpp.
| void AudioOutputBase::Reset | ( | void | ) | [virtual] |
Reset the audiobuffer, timecode and mythmusic visualisation.
Implements AudioOutput.
Reimplemented in AudioOutputNULL.
Definition at line 911 of file audiooutputbase.cpp.
Referenced by PauseUntilBuffered().
| void AudioOutputBase::SetSWVolume | ( | int | new_volume, | |
| bool | save | |||
| ) | [virtual] |
Set the volume for software volume control.
Implements VolumeBase.
Definition at line 1118 of file audiooutputbase.cpp.
| int AudioOutputBase::GetSWVolume | ( | void | ) | [virtual] |
Get the volume for software volume control.
Implements VolumeBase.
Definition at line 1128 of file audiooutputbase.cpp.
Add frames to the audiobuffer and perform any required processing.
Returns false if there's not enough space right now
Implements AudioOutput.
Definition at line 1255 of file audiooutputbase.cpp.
| bool AudioOutputBase::AddData | ( | void * | in_buffer, | |
| int | in_len, | |||
| int64_t | timecode, | |||
| int | frames | |||
| ) | [virtual] |
Add data to the audiobuffer and perform any required processing.
Returns false if there's not enough space right now
Implements AudioOutput.
Definition at line 1267 of file audiooutputbase.cpp.
Referenced by AddFrames().
| virtual bool AudioOutputBase::NeedDecodingBeforePassthrough | ( | void | ) | const [inline, virtual] |
NeedDecodingBeforePassthrough: returns true if AudioOutput class can determine the length in millisecond of native audio frames bitstreamed passed to AddData.
If false, LengthLastData method must be implemented
Reimplemented from AudioOutput.
Definition at line 88 of file audiooutputbase.h.
| virtual int64_t AudioOutputBase::LengthLastData | ( | void | ) | const [inline, virtual] |
LengthLastData: returns the length of the last data added in millisecond.
This function must be implemented if NeedDecodingBeforePassthrough returned false
Reimplemented from AudioOutput.
Definition at line 89 of file audiooutputbase.h.
| void AudioOutputBase::SetTimecode | ( | int64_t | timecode | ) | [virtual] |
Set the timecode of the samples most recently added to the audiobuffer.
Used by mythmusic for seeking since it doesn't provide timecodes to AddData()
Implements AudioOutput.
Definition at line 932 of file audiooutputbase.cpp.
| virtual bool AudioOutputBase::IsPaused | ( | void | ) | const [inline, virtual] |
Implements AudioOutput.
Definition at line 92 of file audiooutputbase.h.
| void AudioOutputBase::Pause | ( | bool | paused | ) | [virtual] |
Implements AudioOutput.
Definition at line 890 of file audiooutputbase.cpp.
Referenced by AddData(), and PauseUntilBuffered().
| void AudioOutputBase::PauseUntilBuffered | ( | void | ) | [virtual] |
Implements AudioOutput.
Definition at line 901 of file audiooutputbase.cpp.
| void AudioOutputBase::Drain | ( | void | ) | [virtual] |
Block until all available frames have been written to the device.
Implements AudioOutput.
Reimplemented in AudioOutputPulseAudio.
Definition at line 1743 of file audiooutputbase.cpp.
| int64_t AudioOutputBase::GetAudiotime | ( | void | ) | [virtual] |
Calculate the timecode of the samples that are about to become audible.
Implements AudioOutput.
Reimplemented in AudioOutputCA.
Definition at line 990 of file audiooutputbase.cpp.
Referenced by GetAudioBufferedTime(), OutputAudioLoop(), SetAudiotime(), and Status().
| int64_t AudioOutputBase::GetAudioBufferedTime | ( | void | ) | [virtual] |
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.
the time in ms representing the sum total of buffered samples
Reimplemented from AudioOutput.
Definition at line 1106 of file audiooutputbase.cpp.
| void AudioOutputBase::Status | ( | void | ) | [virtual] |
Report status via an OutputEvent.
Definition at line 1536 of file audiooutputbase.cpp.
Referenced by AudioOutputJACK::JackCallback(), and OutputAudioLoop().
| void AudioOutputBase::SetSourceBitrate | ( | int | rate | ) | [virtual] |
Set the bitrate of the source material, reported in periodic OutputEvents.
Reimplemented from AudioOutput.
Definition at line 308 of file audiooutputbase.cpp.
Fill in the number of bytes in the audiobuffer and the total size of the audiobuffer.
Reimplemented from AudioOutput.
Definition at line 1560 of file audiooutputbase.cpp.
| virtual void AudioOutputBase::bufferOutputData | ( | bool | y | ) | [inline, virtual] |
Implements AudioOutput.
Definition at line 110 of file audiooutputbase.h.
| int AudioOutputBase::readOutputData | ( | unsigned char * | read_buffer, | |
| int | max_length | |||
| ) | [virtual] |
Implements AudioOutput.
Reimplemented in AudioOutputNULL.
Definition at line 1761 of file audiooutputbase.cpp.
| void AudioOutputBase::InitSettings | ( | const AudioSettings & | settings | ) | [protected] |
Definition at line 159 of file audiooutputbase.cpp.
Referenced by AudioOutputALSA::AudioOutputALSA(), AudioOutputCA::AudioOutputCA(), AudioOutputDX::AudioOutputDX(), AudioOutputJACK::AudioOutputJACK(), AudioOutputNULL::AudioOutputNULL(), AudioOutputOSS::AudioOutputOSS(), AudioOutputPulseAudio::AudioOutputPulseAudio(), and AudioOutputWin::AudioOutputWin().
| virtual bool AudioOutputBase::OpenDevice | ( | void | ) | [protected, pure virtual] |
Implemented in AudioOutputALSA, AudioOutputCA, AudioOutputDX, AudioOutputJACK, AudioOutputNULL, AudioOutputOSS, AudioOutputPulseAudio, and AudioOutputWin.
Referenced by Reconfigure().
| virtual void AudioOutputBase::CloseDevice | ( | void | ) | [protected, pure virtual] |
Implemented in AudioOutputALSA, AudioOutputCA, AudioOutputDX, AudioOutputJACK, AudioOutputNULL, AudioOutputOSS, AudioOutputPulseAudio, and AudioOutputWin.
Referenced by KillAudio().
| virtual void AudioOutputBase::WriteAudio | ( | uchar * | aubuf, | |
| int | size | |||
| ) | [protected, pure virtual] |
Implemented in AudioOutputALSA.
Referenced by OutputAudioLoop().
| virtual int AudioOutputBase::GetBufferedOnSoundcard | ( | void | ) | const [protected, pure virtual] |
Return the size in bytes of frames currently in the audio buffer adjusted with the audio playback latency.
Implemented in AudioOutputALSA, AudioOutputCA, AudioOutputDX, AudioOutputJACK, AudioOutputNULL, AudioOutputOSS, AudioOutputPulseAudio, and AudioOutputWin.
Referenced by GetAudiotime().
| virtual AudioOutputSettings* AudioOutputBase::GetOutputSettings | ( | bool | digital | ) | [inline, protected, virtual] |
Reimplemented in AudioOutputALSA, AudioOutputCA, AudioOutputDX, AudioOutputJACK, AudioOutputNULL, AudioOutputOSS, AudioOutputPulseAudio, and AudioOutputWin.
Definition at line 132 of file audiooutputbase.h.
Referenced by GetOutputSettingsCleaned().
| void AudioOutputBase::KillAudio | ( | void | ) | [protected] |
Kill the output thread and cleanup.
Definition at line 848 of file audiooutputbase.cpp.
Referenced by Reconfigure(), AudioOutputALSA::~AudioOutputALSA(), AudioOutputCA::~AudioOutputCA(), AudioOutputDX::~AudioOutputDX(), AudioOutputJACK::~AudioOutputJACK(), AudioOutputNULL::~AudioOutputNULL(), AudioOutputOSS::~AudioOutputOSS(), AudioOutputPulseAudio::~AudioOutputPulseAudio(), and AudioOutputWin::~AudioOutputWin().
| bool AudioOutputBase::StartOutputThread | ( | void | ) | [protected, virtual] |
Reimplemented in AudioOutputCA, and AudioOutputJACK.
Definition at line 824 of file audiooutputbase.cpp.
Referenced by Reconfigure().
| void AudioOutputBase::StopOutputThread | ( | void | ) | [protected, virtual] |
Reimplemented in AudioOutputCA, and AudioOutputJACK.
Definition at line 836 of file audiooutputbase.cpp.
Referenced by KillAudio().
| int AudioOutputBase::GetAudioData | ( | uchar * | buffer, | |
| int | size, | |||
| bool | full_buffer, | |||
| volatile uint * | local_raud = NULL | |||
| ) | [protected] |
Copy frames from the audiobuffer into the buffer provided.
If 'full_buffer' is true we copy either 'size' bytes (if available) or nothing. Otherwise, we'll copy less than 'size' bytes if that's all that's available. Returns the number of bytes copied.
Definition at line 1666 of file audiooutputbase.cpp.
Referenced by AudioOutputJACK::JackCallback(), OutputAudioLoop(), and AudioOutputCA::RenderAudio().
| void AudioOutputBase::OutputAudioLoop | ( | void | ) | [protected] |
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.
Definition at line 1571 of file audiooutputbase.cpp.
Referenced by run().
| void AudioOutputBase::run | ( | void | ) | [protected, virtual] |
Main routine for the output thread.
Reimplemented from MThread.
Definition at line 1752 of file audiooutputbase.cpp.
| int AudioOutputBase::CheckFreeSpace | ( | int & | frames | ) | [protected] |
Check that there's enough space in the audiobuffer to write the provided number of frames.
If there is not enough space, set 'frames' to the number that will fit
Returns the number of bytes that the frames will take up
Definition at line 1141 of file audiooutputbase.cpp.
Referenced by AddData(), and CopyWithUpmix().
| int AudioOutputBase::audiolen | ( | ) | [inline, protected] |
Get the number of bytes in the audiobuffer.
Definition at line 953 of file audiooutputbase.cpp.
Referenced by audiofree(), and audioready().
| int AudioOutputBase::audiofree | ( | ) | [protected] |
Get the free space in the audiobuffer in bytes.
Definition at line 964 of file audiooutputbase.cpp.
Referenced by AddData(), CheckFreeSpace(), and GetBufferStatus().
| int AudioOutputBase::audioready | ( | ) | [protected] |
Get the scaled number of bytes in the audiobuffer, i.e.
the number of samples * the output bytes per sample
This value can differ from that returned by audiolen if samples are being converted to floats and the output sample format is not 32 bits
Definition at line 979 of file audiooutputbase.cpp.
Referenced by AddData(), Drain(), GetAudioData(), AudioOutputCA::GetAudiotime(), GetAudiotime(), and OutputAudioLoop().
| void AudioOutputBase::SetStretchFactorLocked | ( | float | lstretchfactor | ) | [protected] |
Set the timestretch factor.
You must hold the audio_buflock to call this safely
Definition at line 319 of file audiooutputbase.cpp.
Referenced by Reconfigure(), and SetStretchFactor().
| int AudioOutputBase::GetBaseAudBufTimeCode | ( | ) | const [inline, protected] |
Definition at line 157 of file audiooutputbase.h.
Referenced by AudioOutputCA::GetAudiotime().
| bool AudioOutputBase::SetupPassthrough | ( | int | codec, | |
| int | codec_profile, | |||
| int & | samplerate_tmp, | |||
| int & | channels_tmp | |||
| ) | [private] |
Definition at line 409 of file audiooutputbase.cpp.
Referenced by Reconfigure().
| AudioOutputSettings * AudioOutputBase::OutputSettings | ( | bool | digital = true |
) | [private] |
Definition at line 456 of file audiooutputbase.cpp.
Referenced by Reconfigure().
| int AudioOutputBase::CopyWithUpmix | ( | char * | buffer, | |
| int | frames, | |||
| uint & | org_waud | |||
| ) | [private] |
Copy frames into the audiobuffer, upmixing en route if necessary.
Returns the number of frames written, which may be less than requested if the upmixer buffered some (or all) of them
Definition at line 1176 of file audiooutputbase.cpp.
Referenced by AddData().
| void AudioOutputBase::SetAudiotime | ( | int | frames, | |
| int64_t | timecode | |||
| ) | [private] |
Set the timecode of the top of the ringbuffer Exclude all other processing elements as they dont vary between AddData calls.
Definition at line 1056 of file audiooutputbase.cpp.
Referenced by AddData().
const uint AudioOutputBase::kAudioSRCInputSize = 16384 [static] |
Definition at line 113 of file audiooutputbase.h.
Referenced by AddData(), and Reconfigure().
const uint AudioOutputBase::kAudioRingBufferSize = 3072000u [static] |
Audio Buffer Size -- should be divisible by 32,24,16,12,10,8,6,4,2..
Definition at line 116 of file audiooutputbase.h.
Referenced by AddData(), audiofree(), audiolen(), CopyWithUpmix(), GetAudioData(), and GetBufferStatus().
int AudioOutputBase::channels [protected] |
Reimplemented from VolumeBase.
Definition at line 161 of file audiooutputbase.h.
Referenced by AudioOutputJACK::_jack_connect_ports(), AudioOutputPulseAudio::ConnectPlaybackStream(), AudioOutputJACK::DeinterleaveAudio(), GetChannels(), AudioOutputNULL::GetOutputSettings(), AudioOutputCA::GetOutputSettings(), AudioOutputALSA::GetOutputSettings(), AudioOutputJACK::JackCallback(), AudioOutputJACK::JackGraphOrderCallback(), CoreAudioData::OpenAnalog(), AudioOutputWin::OpenDevice(), AudioOutputPulseAudio::OpenDevice(), AudioOutputOSS::OpenDevice(), AudioOutputJACK::OpenDevice(), AudioOutputDX::OpenDevice(), AudioOutputALSA::OpenDevice(), AudioOutputALSA::OpenMixer(), Reconfigure(), AudioOutputCA::RenderAudio(), and AudioOutputALSA::WriteAudio().
int AudioOutputBase::codec [protected] |
Definition at line 162 of file audiooutputbase.h.
Referenced by Reconfigure(), and ToggleUpmix().
int AudioOutputBase::bytes_per_frame [protected] |
Definition at line 163 of file audiooutputbase.h.
Referenced by AddData(), audioready(), CheckFreeSpace(), CopyWithUpmix(), GetAudiotime(), Reconfigure(), and SetStretchFactorLocked().
int AudioOutputBase::output_bytes_per_frame [protected] |
Definition at line 164 of file audiooutputbase.h.
Referenced by audioready(), AudioOutputPulseAudio::ConnectPlaybackStream(), AudioOutputCA::GetAudiotime(), GetAudiotime(), AudioOutputPulseAudio::GetBufferedOnSoundcard(), AudioOutputJACK::GetBufferedOnSoundcard(), AudioOutputALSA::GetBufferedOnSoundcard(), AudioOutputJACK::JackCallback(), AudioOutputJACK::JackXRunCallback(), CoreAudioData::OpenAnalog(), AudioOutputWin::OpenDevice(), AudioOutputOSS::OpenDevice(), AudioOutputJACK::OpenDevice(), AudioOutputDX::OpenDevice(), OutputAudioLoop(), Reconfigure(), AudioOutputCA::RenderAudio(), AudioOutputALSA::SetParameters(), and AudioOutputALSA::WriteAudio().
AudioFormat AudioOutputBase::format [protected] |
Definition at line 165 of file audiooutputbase.h.
Referenced by AddData(), CopyWithUpmix(), GetFormat(), AudioOutputOSS::OpenDevice(), AudioOutputALSA::OpenDevice(), Reconfigure(), Status(), and ToggleUpmix().
AudioFormat AudioOutputBase::output_format [protected] |
Definition at line 166 of file audiooutputbase.h.
Referenced by GetAudioData(), CoreAudioData::OpenAnalog(), AudioOutputWin::OpenDevice(), AudioOutputPulseAudio::OpenDevice(), AudioOutputOSS::OpenDevice(), AudioOutputDX::OpenDevice(), AudioOutputALSA::OpenDevice(), Reconfigure(), AudioOutputCA::RenderAudio(), and AudioOutputALSA::WriteAudio().
int AudioOutputBase::samplerate [protected] |
Definition at line 167 of file audiooutputbase.h.
Referenced by AudioOutputPulseAudio::ConnectPlaybackStream(), GetAudiotime(), AudioOutputPulseAudio::GetBufferedOnSoundcard(), AudioOutputJACK::JackXRunCallback(), CoreAudioData::OpenAnalog(), AudioOutputWin::OpenDevice(), AudioOutputPulseAudio::OpenDevice(), AudioOutputOSS::OpenDevice(), AudioOutputJACK::OpenDevice(), AudioOutputDX::OpenDevice(), AudioOutputALSA::OpenDevice(), CoreAudioData::OpenSPDIF(), OutputAudioLoop(), Reconfigure(), and SetStretchFactorLocked().
int AudioOutputBase::effdsp [protected] |
Definition at line 169 of file audiooutputbase.h.
Referenced by AudioOutputCA::GetAudiotime(), GetAudiotime(), Reconfigure(), AudioOutputCA::RenderAudio(), SetAudiotime(), and SetEffDsp().
int AudioOutputBase::fragment_size [protected] |
Definition at line 170 of file audiooutputbase.h.
Referenced by AddData(), AudioOutputPulseAudio::ConnectPlaybackStream(), Drain(), AudioOutputWin::GetBufferedOnSoundcard(), AudioOutputJACK::GetBufferedOnSoundcard(), AudioOutputJACK::JackCallback(), AudioOutputJACK::JackXRunCallback(), AudioOutputWin::OpenDevice(), AudioOutputOSS::OpenDevice(), AudioOutputNULL::OpenDevice(), AudioOutputJACK::OpenDevice(), AudioOutputDX::OpenDevice(), OutputAudioLoop(), Reconfigure(), and AudioOutputALSA::SetParameters().
long AudioOutputBase::soundcard_buffer_size [protected] |
Definition at line 171 of file audiooutputbase.h.
Referenced by AudioOutputPulseAudio::ConnectPlaybackStream(), AudioOutputDXPrivate::FillBuffer(), AudioOutputDX::GetBufferedOnSoundcard(), AudioOutputWin::OpenDevice(), AudioOutputOSS::OpenDevice(), AudioOutputNULL::OpenDevice(), AudioOutputDX::OpenDevice(), and AudioOutputALSA::SetParameters().
QString AudioOutputBase::main_device [protected] |
Definition at line 173 of file audiooutputbase.h.
Referenced by AudioOutputJACK::_jack_get_ports(), AudioOutputALSA::AudioOutputALSA(), AudioOutputCA::AudioOutputCA(), AudioOutputDX::AudioOutputDX(), AudioOutputPulseAudio::ChooseHost(), AudioOutputOSS::GetOutputSettings(), AudioOutputALSA::GetOutputSettings(), AudioOutputDXPrivate::InitDirectSound(), AudioOutputOSS::OpenDevice(), AudioOutputJACK::OpenDevice(), Reconfigure(), and AudioOutputALSA::TryOpenDevice().
QString AudioOutputBase::passthru_device [protected] |
Definition at line 173 of file audiooutputbase.h.
Referenced by AudioOutputALSA::AudioOutputALSA(), AudioOutputDX::AudioOutputDX(), AudioOutputALSA::GetOutputSettings(), AudioOutputDXPrivate::InitDirectSound(), and AudioOutputALSA::TryOpenDevice().
bool AudioOutputBase::m_discretedigital [protected] |
Definition at line 174 of file audiooutputbase.h.
Referenced by AudioOutputALSA::AudioOutputALSA(), AudioOutputDX::AudioOutputDX(), AudioOutputALSA::GetOutputSettings(), GetOutputSettingsCleaned(), GetOutputSettingsUsers(), and AudioOutputALSA::TryOpenDevice().
bool AudioOutputBase::passthru [protected] |
Definition at line 176 of file audiooutputbase.h.
Referenced by AddData(), audioready(), GetAudioData(), AudioOutputALSA::GetOutputSettings(), AudioOutputWin::OpenDevice(), AudioOutputOSS::OpenDevice(), AudioOutputDX::OpenDevice(), AudioOutputCA::OpenDevice(), AudioOutputALSA::OpenDevice(), Reconfigure(), AudioOutputCA::RenderAudio(), ToggleUpmix(), and AudioOutputALSA::WriteAudio().
bool AudioOutputBase::enc [protected] |
Definition at line 176 of file audiooutputbase.h.
Referenced by audioready(), GetAudioData(), AudioOutputALSA::GetOutputSettings(), KillAudio(), AudioOutputWin::OpenDevice(), AudioOutputDX::OpenDevice(), AudioOutputCA::OpenDevice(), AudioOutputALSA::OpenDevice(), and Reconfigure().
bool AudioOutputBase::reenc [protected] |
Definition at line 176 of file audiooutputbase.h.
Referenced by Reconfigure().
float AudioOutputBase::stretchfactor [protected] |
Definition at line 178 of file audiooutputbase.h.
Referenced by AddData(), AudioOutputCA::GetAudiotime(), GetAudiotime(), GetStretchFactor(), KillAudio(), Reconfigure(), and SetStretchFactorLocked().
int AudioOutputBase::eff_stretchfactor [protected] |
Definition at line 179 of file audiooutputbase.h.
Referenced by GetAudiotime(), SetAudiotime(), and SetStretchFactorLocked().
AudioOutputSource AudioOutputBase::source [protected] |
Definition at line 180 of file audiooutputbase.h.
Referenced by Reconfigure().
bool AudioOutputBase::killaudio [protected] |
Definition at line 182 of file audiooutputbase.h.
Referenced by AudioOutputJACK::JackCallback(), KillAudio(), OutputAudioLoop(), Reconfigure(), AudioOutputCA::RenderAudio(), and ~AudioOutputBase().
bool AudioOutputBase::pauseaudio [protected] |
Definition at line 184 of file audiooutputbase.h.
Referenced by AddData(), AudioOutputJACK::JackCallback(), OutputAudioLoop(), Pause(), Reconfigure(), AudioOutputCA::RenderAudio(), and Reset().
bool AudioOutputBase::actually_paused [protected] |
Definition at line 184 of file audiooutputbase.h.
Referenced by IsPaused(), AudioOutputJACK::JackCallback(), OutputAudioLoop(), Pause(), Reconfigure(), and AudioOutputCA::RenderAudio().
bool AudioOutputBase::was_paused [protected] |
Definition at line 184 of file audiooutputbase.h.
Referenced by AudioOutputJACK::JackCallback(), OutputAudioLoop(), Pause(), Reconfigure(), and Reset().
bool AudioOutputBase::unpause_when_ready [protected] |
Definition at line 184 of file audiooutputbase.h.
Referenced by AddData(), Pause(), PauseUntilBuffered(), and Reconfigure().
bool AudioOutputBase::set_initial_vol [protected] |
Definition at line 185 of file audiooutputbase.h.
Referenced by AudioOutputPulseAudio::ConnectPlaybackStream(), AudioOutputCA::OpenDevice(), AudioOutputALSA::OpenMixer(), Reconfigure(), AudioOutputOSS::VolumeInit(), and AudioOutputJACK::VolumeInit().
bool AudioOutputBase::buffer_output_data_for_use [protected] |
Definition at line 186 of file audiooutputbase.h.
Referenced by bufferOutputData(), AudioOutputNULL::GetBufferedOnSoundcard(), AudioOutputNULL::Reset(), and AudioOutputNULL::WriteAudio().
int AudioOutputBase::configured_channels [protected] |
Definition at line 188 of file audiooutputbase.h.
Referenced by AddData(), CanUpmix(), CopyWithUpmix(), GetAudioData(), InitSettings(), Reconfigure(), SetStretchFactorLocked(), and ToggleUpmix().
int AudioOutputBase::max_channels [protected] |
Definition at line 189 of file audiooutputbase.h.
Referenced by CanPassthrough(), InitSettings(), Reconfigure(), and ToggleUpmix().
int AudioOutputBase::src_quality [protected] |
Definition at line 190 of file audiooutputbase.h.
Referenced by AudioOutputBase(), Reconfigure(), and AudioOutputALSA::SetParameters().
Definition at line 198 of file audiooutputbase.h.
Referenced by GetOutputSettingsCleaned(), and ~AudioOutputBase().
Definition at line 199 of file audiooutputbase.h.
Referenced by AddData(), CopyWithUpmix(), GetAudioData(), GetOutputSettingsUsers(), InitSettings(), OutputSettings(), Reconfigure(), Status(), and ~AudioOutputBase().
Definition at line 200 of file audiooutputbase.h.
Referenced by GetOutputSettingsCleaned(), and ~AudioOutputBase().
Definition at line 201 of file audiooutputbase.h.
Referenced by CanPassthrough(), GetOutputSettingsUsers(), InitSettings(), OutputSettings(), Reconfigure(), SetupPassthrough(), and ~AudioOutputBase().
bool AudioOutputBase::need_resampler [private] |
Definition at line 202 of file audiooutputbase.h.
Referenced by AddData(), KillAudio(), and Reconfigure().
SRC_STATE* AudioOutputBase::src_ctx [private] |
Definition at line 203 of file audiooutputbase.h.
Referenced by AddData(), CheckFreeSpace(), KillAudio(), and Reconfigure().
Definition at line 204 of file audiooutputbase.h.
Referenced by AddData(), KillAudio(), SetAudiotime(), and SetStretchFactorLocked().
Definition at line 205 of file audiooutputbase.h.
Referenced by AddData(), KillAudio(), Reconfigure(), and SetAudiotime().
FreeSurround* AudioOutputBase::upmixer [private] |
Definition at line 206 of file audiooutputbase.h.
Referenced by AddData(), CopyWithUpmix(), IsUpmixing(), KillAudio(), Reconfigure(), and SetAudiotime().
int AudioOutputBase::source_channels [private] |
Definition at line 208 of file audiooutputbase.h.
Referenced by AddData(), CanUpmix(), CopyWithUpmix(), Reconfigure(), SetStretchFactorLocked(), Status(), and ToggleUpmix().
int AudioOutputBase::source_samplerate [private] |
Definition at line 209 of file audiooutputbase.h.
Referenced by AddData(), Reconfigure(), SetTimecode(), Status(), and ToggleUpmix().
int AudioOutputBase::source_bytes_per_frame [private] |
Definition at line 210 of file audiooutputbase.h.
Referenced by AddData(), AddFrames(), GetBytesPerFrame(), and Reconfigure().
bool AudioOutputBase::upmix_default [private] |
Definition at line 211 of file audiooutputbase.h.
Referenced by InitSettings(), Reconfigure(), and ToggleUpmix().
bool AudioOutputBase::needs_upmix [private] |
Definition at line 212 of file audiooutputbase.h.
Referenced by AddData(), CanUpmix(), CopyWithUpmix(), IsUpmixing(), KillAudio(), Reconfigure(), SetAudiotime(), and SetStretchFactorLocked().
bool AudioOutputBase::needs_downmix [private] |
Definition at line 213 of file audiooutputbase.h.
Referenced by AddData(), Reconfigure(), and SetStretchFactorLocked().
int AudioOutputBase::surround_mode [private] |
Definition at line 214 of file audiooutputbase.h.
Referenced by Reconfigure().
float AudioOutputBase::old_stretchfactor [private] |
Definition at line 215 of file audiooutputbase.h.
Referenced by KillAudio(), and Reconfigure().
int AudioOutputBase::volume [private] |
Reimplemented from VolumeBase.
Definition at line 216 of file audiooutputbase.h.
Referenced by AddData(), AudioOutputPulseAudio::ConnectPlaybackStream(), GetSWVolume(), AudioOutputOSS::GetVolumeChannel(), AudioOutputDX::GetVolumeChannel(), AudioOutputCA::GetVolumeChannel(), Reconfigure(), SetSWVolume(), AudioOutputOSS::VolumeInit(), and AudioOutputJACK::VolumeInit().
QString AudioOutputBase::volumeControl [private] |
Definition at line 217 of file audiooutputbase.h.
Referenced by Reconfigure(), and SetSWVolume().
bool AudioOutputBase::processing [private] |
Definition at line 219 of file audiooutputbase.h.
Referenced by AddData(), CopyWithUpmix(), GetAudioData(), Reconfigure(), and SetStretchFactorLocked().
int64_t AudioOutputBase::frames_buffered [private] |
Definition at line 221 of file audiooutputbase.h.
Referenced by AddData(), Reconfigure(), Reset(), and SetTimecode().
bool AudioOutputBase::audio_thread_exists [private] |
Definition at line 223 of file audiooutputbase.h.
Referenced by StartOutputThread(), and StopOutputThread().
QMutex AudioOutputBase::audio_buflock [private] |
Writes to the audiobuffer, reconfigures and audiobuffer resets can only take place while holding this lock.
Definition at line 229 of file audiooutputbase.h.
Referenced by AddData(), KillAudio(), Reconfigure(), Reset(), and SetStretchFactor().
QMutex AudioOutputBase::avsync_lock [private] |
must hold avsync_lock to read or write 'audiotime' and 'audiotime_updated'
Definition at line 235 of file audiooutputbase.h.
Referenced by GetAudiotime(), Reconfigure(), and Reset().
int64_t AudioOutputBase::audiotime [private] |
timecode of audio leaving the soundcard (same units as timecodes)
Definition at line 240 of file audiooutputbase.h.
Referenced by GetAudiotime(), OutputAudioLoop(), Reconfigure(), Reset(), SetAudiotime(), and SetTimecode().
volatile uint AudioOutputBase::raud [private] |
Audio circular buffer.
Definition at line 245 of file audiooutputbase.h.
Referenced by audiolen(), GetAudioData(), OutputAudioLoop(), Reconfigure(), Reset(), and SetStretchFactorLocked().
volatile uint AudioOutputBase::waud [private] |
Definition at line 245 of file audiooutputbase.h.
Referenced by AddData(), audiolen(), Reconfigure(), Reset(), and SetStretchFactorLocked().
int64_t AudioOutputBase::audbuf_timecode [private] |
timecode of audio most recently placed into buffer
Definition at line 249 of file audiooutputbase.h.
Referenced by GetAudioBufferedTime(), AudioOutputCA::GetAudiotime(), GetAudiotime(), GetBaseAudBufTimeCode(), Reconfigure(), Reset(), SetAudiotime(), and SetTimecode().
AsyncLooseLock AudioOutputBase::reset_active [private] |
Definition at line 250 of file audiooutputbase.h.
Referenced by OutputAudioLoop(), Reconfigure(), Reset(), and SetStretchFactorLocked().
QMutex AudioOutputBase::killAudioLock [private] |
Reimplemented in AudioOutputALSA.
Definition at line 252 of file audiooutputbase.h.
Referenced by KillAudio().
long AudioOutputBase::current_seconds [private] |
Definition at line 254 of file audiooutputbase.h.
Referenced by Reconfigure(), Reset(), and Status().
long AudioOutputBase::source_bitrate [private] |
Definition at line 255 of file audiooutputbase.h.
Referenced by Reconfigure(), SetSourceBitrate(), and Status().
float* AudioOutputBase::src_in [private] |
Definition at line 257 of file audiooutputbase.h.
Referenced by AddData(), AudioOutputBase(), and Reconfigure().
SRC_DATA AudioOutputBase::src_data [private] |
Definition at line 260 of file audiooutputbase.h.
Referenced by AddData(), AudioOutputBase(), and Reconfigure().
uint AudioOutputBase::memory_corruption_test0 [private] |
Definition at line 261 of file audiooutputbase.h.
Referenced by ~AudioOutputBase().
float AudioOutputBase::src_in_buf[kAudioSRCInputSize+16] [private] |
Definition at line 262 of file audiooutputbase.h.
Referenced by AudioOutputBase().
uint AudioOutputBase::memory_corruption_test1 [private] |
Definition at line 263 of file audiooutputbase.h.
Referenced by ~AudioOutputBase().
float* AudioOutputBase::src_out [private] |
Definition at line 264 of file audiooutputbase.h.
Referenced by AddData(), Reconfigure(), and ~AudioOutputBase().
int AudioOutputBase::kAudioSRCOutputSize [private] |
Definition at line 265 of file audiooutputbase.h.
Referenced by Reconfigure(), and ~AudioOutputBase().
uint AudioOutputBase::memory_corruption_test2 [private] |
Definition at line 266 of file audiooutputbase.h.
Referenced by ~AudioOutputBase().
uchar AudioOutputBase::audiobuffer[kAudioRingBufferSize] [private] |
main audio buffer
Definition at line 270 of file audiooutputbase.h.
Referenced by AudioOutputBase().
uint AudioOutputBase::memory_corruption_test3 [private] |
Definition at line 271 of file audiooutputbase.h.
Referenced by ~AudioOutputBase().
uint AudioOutputBase::m_configure_succeeded [private] |
Definition at line 272 of file audiooutputbase.h.
Referenced by AddData(), GetAudiotime(), Reconfigure(), and SetAudiotime().
int64_t AudioOutputBase::m_length_last_data [private] |
Definition at line 273 of file audiooutputbase.h.
Referenced by AddData(), and LengthLastData().
SPDIFEncoder* AudioOutputBase::m_spdifenc [private] |
Definition at line 276 of file audiooutputbase.h.
Referenced by AddData(), and SetupPassthrough().
1.6.3