![]() |
Audacity 3.2.0
|
#include "AudioIO.h"
#include "AudioIOExt.h"
#include "AudioIOListener.h"
#include "float_cast.h"
#include "DeviceManager.h"
#include <cfloat>
#include <math.h>
#include <stdlib.h>
#include <algorithm>
#include <numeric>
#include <optional>
#include <malloc.h>
#include "portaudio.h"
#include "pa_win_wasapi.h"
#include <wx/wxcrtvararg.h>
#include <wx/log.h>
#include <wx/time.h>
#include <wx/debug.h>
#include <wx/power.h>
#include "Channel.h"
#include "Meter.h"
#include "Mix.h"
#include "Resample.h"
#include "RingBuffer.h"
#include "Decibels.h"
#include "Prefs.h"
#include "Project.h"
#include "TransactionScope.h"
#include "RealtimeEffectManager.h"
#include "QualitySettings.h"
#include "BasicUI.h"
#include "Gain.h"
Go to the source code of this file.
Classes | |
struct | AudioIoCallback::TransportState |
Macros | |
#define | stackAllocate(T, count) static_cast<T*>(alloca(count * sizeof(T))) |
Functions | |
int | audacityAudioCallback (const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData) |
static PaSampleFormat | AudacityToPortAudioSampleFormat (sampleFormat format) |
static void | DoSoftwarePlaythrough (constSamplePtr inputBuffer, sampleFormat inputFormat, unsigned inputChannels, float *outputBuffer, unsigned long len) |
void | ClampBuffer (float *pBuffer, unsigned long len) |
Variables | |
BoolSetting | SoundActivatedRecord { "/AudioIO/SoundActivatedRecord", false } |
#define stackAllocate | ( | T, | |
count | |||
) | static_cast<T*>(alloca(count * sizeof(T))) |
Definition at line 2055 of file AudioIO.cpp.
int audacityAudioCallback | ( | const void * | inputBuffer, |
void * | outputBuffer, | ||
unsigned long | framesPerBuffer, | ||
const PaStreamCallbackTimeInfo * | timeInfo, | ||
PaStreamCallbackFlags | statusFlags, | ||
void * | userData | ||
) |
brief The function which is called from PortAudio's callback thread context to collect and deliver audio for / from the sound device.
This covers recording, playback, and doing both simultaneously. It is also invoked to do monitoring and software playthrough. Note that dealing with the two buffers needs some care to ensure that the right things happen for all possible cases.
inputBuffer | Buffer of length framesPerBuffer containing samples from the sound card, or null if not capturing audio. Note that the data type will depend on the format of audio data that was chosen when the stream was created (so could be floats or various integers) |
outputBuffer | Uninitialised buffer of length framesPerBuffer which will be sent to the sound card after the callback, or null if not playing audio back. |
framesPerBuffer | The length of the playback and recording buffers |
PaStreamCallbackTimeInfo | Pointer to PortAudio time information structure, which tells us how long we have been playing / recording |
statusFlags | PortAudio stream status flags |
userData | pointer to user-defined data structure. Provided for flexibility by PortAudio, but not used by Audacity - the data is stored in the AudioIO class instead. |
Definition at line 2524 of file AudioIO.cpp.
References AudioIO::Get().
Referenced by AudioIO::StartPortAudioStream().
|
static |
Definition at line 462 of file AudioIO.cpp.
References floatSample, anonymous_namespace{ExportPCM.cpp}::format, int16Sample, and int24Sample.
Referenced by AudioIO::StartPortAudioStream().
void ClampBuffer | ( | float * | pBuffer, |
unsigned long | len | ||
) |
Definition at line 2614 of file AudioIO.cpp.
Referenced by AudioIoCallback::FillOutputBuffers().
|
static |
Definition at line 2505 of file AudioIO.cpp.
References SAMPLE_SIZE, and SamplesToFloats().
Referenced by AudioIoCallback::DoPlaythrough().
BoolSetting SoundActivatedRecord { "/AudioIO/SoundActivatedRecord", false } |
Definition at line 3356 of file AudioIO.cpp.
Referenced by RecordingPrefs::Commit(), anonymous_namespace{PluginMenus.cpp}::OnResetConfig(), anonymous_namespace{TransportMenus.cpp}::OnToggleSoundActivated(), anonymous_namespace{HelpMenus.cpp}::QuickFixDialog::PopulateOrExchange(), RecordingPrefs::PopulateOrExchange(), AudioIO::StartStream(), and anonymous_namespace{TransportMenus.cpp}::TransportMenu().