mirror of https://github.com/encounter/SDL.git
adjust handling of iscapture
- drop iscapture parameter of OpenDevice - use SDL_bool for iscapture
This commit is contained in:
parent
e2f70a2dff
commit
1043dd8c0d
|
@ -289,7 +289,7 @@ SDL_AudioFreeDeviceHandle_Default(void *handle)
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
SDL_AudioOpenDevice_Default(_THIS, void *handle, const char *devname, int iscapture)
|
SDL_AudioOpenDevice_Default(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
return SDL_Unsupported();
|
return SDL_Unsupported();
|
||||||
}
|
}
|
||||||
|
@ -458,7 +458,7 @@ free_device_list(SDL_AudioDeviceItem **devices, int *devCount)
|
||||||
|
|
||||||
/* The audio backends call this when a new device is plugged in. */
|
/* The audio backends call this when a new device is plugged in. */
|
||||||
void
|
void
|
||||||
SDL_AddAudioDevice(const int iscapture, const char *name, SDL_AudioSpec *spec, void *handle)
|
SDL_AddAudioDevice(const SDL_bool iscapture, const char *name, SDL_AudioSpec *spec, void *handle)
|
||||||
{
|
{
|
||||||
const int device_index = iscapture ? add_capture_device(name, spec, handle) : add_output_device(name, spec, handle);
|
const int device_index = iscapture ? add_capture_device(name, spec, handle) : add_output_device(name, spec, handle);
|
||||||
if (device_index != -1) {
|
if (device_index != -1) {
|
||||||
|
@ -520,7 +520,7 @@ mark_device_removed(void *handle, SDL_AudioDeviceItem *devices, SDL_bool *remove
|
||||||
|
|
||||||
/* The audio backends call this when a device is removed from the system. */
|
/* The audio backends call this when a device is removed from the system. */
|
||||||
void
|
void
|
||||||
SDL_RemoveAudioDevice(const int iscapture, void *handle)
|
SDL_RemoveAudioDevice(const SDL_bool iscapture, void *handle)
|
||||||
{
|
{
|
||||||
int device_index;
|
int device_index;
|
||||||
SDL_AudioDevice *device = NULL;
|
SDL_AudioDevice *device = NULL;
|
||||||
|
@ -1398,7 +1398,7 @@ open_audio_device(const char *devname, int iscapture,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (current_audio.impl.OpenDevice(device, handle, devname, iscapture) < 0) {
|
if (current_audio.impl.OpenDevice(device, handle, devname) < 0) {
|
||||||
close_audio_device(device);
|
close_audio_device(device);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,11 +39,11 @@ typedef struct SDL_AudioDevice SDL_AudioDevice;
|
||||||
/* Audio targets should call this as devices are added to the system (such as
|
/* Audio targets should call this as devices are added to the system (such as
|
||||||
a USB headset being plugged in), and should also be called for
|
a USB headset being plugged in), and should also be called for
|
||||||
for every device found during DetectDevices(). */
|
for every device found during DetectDevices(). */
|
||||||
extern void SDL_AddAudioDevice(const int iscapture, const char *name, SDL_AudioSpec *spec, void *handle);
|
extern void SDL_AddAudioDevice(const SDL_bool iscapture, const char *name, SDL_AudioSpec *spec, void *handle);
|
||||||
|
|
||||||
/* Audio targets should call this as devices are removed, so SDL can update
|
/* Audio targets should call this as devices are removed, so SDL can update
|
||||||
its list of available devices. */
|
its list of available devices. */
|
||||||
extern void SDL_RemoveAudioDevice(const int iscapture, void *handle);
|
extern void SDL_RemoveAudioDevice(const SDL_bool iscapture, void *handle);
|
||||||
|
|
||||||
/* Audio targets should call this if an opened audio device is lost while
|
/* Audio targets should call this if an opened audio device is lost while
|
||||||
being used. This can happen due to i/o errors, or a device being unplugged,
|
being used. This can happen due to i/o errors, or a device being unplugged,
|
||||||
|
@ -65,7 +65,7 @@ extern void SDL_OpenedAudioDeviceDisconnected(SDL_AudioDevice *device);
|
||||||
typedef struct SDL_AudioDriverImpl
|
typedef struct SDL_AudioDriverImpl
|
||||||
{
|
{
|
||||||
void (*DetectDevices) (void);
|
void (*DetectDevices) (void);
|
||||||
int (*OpenDevice) (_THIS, void *handle, const char *devname, int iscapture);
|
int (*OpenDevice) (_THIS, void *handle, const char *devname);
|
||||||
void (*ThreadInit) (_THIS); /* Called by audio thread at start */
|
void (*ThreadInit) (_THIS); /* Called by audio thread at start */
|
||||||
void (*ThreadDeinit) (_THIS); /* Called by audio thread at end */
|
void (*ThreadDeinit) (_THIS); /* Called by audio thread at end */
|
||||||
void (*WaitDevice) (_THIS);
|
void (*WaitDevice) (_THIS);
|
||||||
|
|
|
@ -71,9 +71,10 @@ void aaudio_errorCallback( AAudioStream *stream, void *userData, aaudio_result_t
|
||||||
#define LIB_AAUDIO_SO "libaaudio.so"
|
#define LIB_AAUDIO_SO "libaaudio.so"
|
||||||
|
|
||||||
static int
|
static int
|
||||||
aaudio_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
aaudio_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
struct SDL_PrivateAudioData *private;
|
struct SDL_PrivateAudioData *private;
|
||||||
|
SDL_bool iscapture = this->iscapture;
|
||||||
aaudio_result_t res;
|
aaudio_result_t res;
|
||||||
LOGI(__func__);
|
LOGI(__func__);
|
||||||
|
|
||||||
|
|
|
@ -543,9 +543,10 @@ ALSA_set_buffer_size(_THIS, snd_pcm_hw_params_t *params)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ALSA_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
ALSA_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
int status = 0;
|
int status = 0;
|
||||||
|
SDL_bool iscapture = this->iscapture;
|
||||||
snd_pcm_t *pcm_handle = NULL;
|
snd_pcm_t *pcm_handle = NULL;
|
||||||
snd_pcm_hw_params_t *hwparams = NULL;
|
snd_pcm_hw_params_t *hwparams = NULL;
|
||||||
snd_pcm_sw_params_t *swparams = NULL;
|
snd_pcm_sw_params_t *swparams = NULL;
|
||||||
|
|
|
@ -36,9 +36,10 @@ static SDL_AudioDevice* audioDevice = NULL;
|
||||||
static SDL_AudioDevice* captureDevice = NULL;
|
static SDL_AudioDevice* captureDevice = NULL;
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ANDROIDAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
ANDROIDAUDIO_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
SDL_AudioFormat test_format;
|
SDL_AudioFormat test_format;
|
||||||
|
SDL_bool iscapture = this->iscapture;
|
||||||
|
|
||||||
SDL_assert((captureDevice == NULL) || !iscapture);
|
SDL_assert((captureDevice == NULL) || !iscapture);
|
||||||
SDL_assert((audioDevice == NULL) || iscapture);
|
SDL_assert((audioDevice == NULL) || iscapture);
|
||||||
|
|
|
@ -216,7 +216,7 @@ ARTS_Suspend(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ARTS_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
ARTS_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
int bits = 0, frag_spec = 0;
|
int bits = 0, frag_spec = 0;
|
||||||
|
|
|
@ -1015,11 +1015,11 @@ audioqueue_thread(void *arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
COREAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
COREAUDIO_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
AudioStreamBasicDescription *strdesc;
|
AudioStreamBasicDescription *strdesc;
|
||||||
SDL_AudioFormat test_format = SDL_FirstAudioFormat(this->spec.format);
|
SDL_AudioFormat test_format = SDL_FirstAudioFormat(this->spec.format);
|
||||||
int valid_datatype = 0;
|
SDL_bool valid_datatype = SDL_FALSE, iscapture = this->iscapture;
|
||||||
SDL_AudioDevice **new_open_devices;
|
SDL_AudioDevice **new_open_devices;
|
||||||
|
|
||||||
/* Initialize all variables that we clean on shutdown */
|
/* Initialize all variables that we clean on shutdown */
|
||||||
|
@ -1088,7 +1088,7 @@ COREAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
||||||
case AUDIO_S32MSB:
|
case AUDIO_S32MSB:
|
||||||
case AUDIO_F32LSB:
|
case AUDIO_F32LSB:
|
||||||
case AUDIO_F32MSB:
|
case AUDIO_F32MSB:
|
||||||
valid_datatype = 1;
|
valid_datatype = SDL_TRUE;
|
||||||
strdesc->mBitsPerChannel = SDL_AUDIO_BITSIZE(this->spec.format);
|
strdesc->mBitsPerChannel = SDL_AUDIO_BITSIZE(this->spec.format);
|
||||||
if (SDL_AUDIO_ISBIGENDIAN(this->spec.format))
|
if (SDL_AUDIO_ISBIGENDIAN(this->spec.format))
|
||||||
strdesc->mFormatFlags |= kLinearPCMFormatFlagIsBigEndian;
|
strdesc->mFormatFlags |= kLinearPCMFormatFlagIsBigEndian;
|
||||||
|
|
|
@ -473,12 +473,13 @@ CreateCaptureBuffer(_THIS, const DWORD bufsize, WAVEFORMATEX *wfmt)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
DSOUND_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
DSOUND_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
const DWORD numchunks = 8;
|
const DWORD numchunks = 8;
|
||||||
HRESULT result;
|
HRESULT result;
|
||||||
SDL_bool valid_format = SDL_FALSE;
|
SDL_bool valid_format = SDL_FALSE;
|
||||||
SDL_bool tried_format = SDL_FALSE;
|
SDL_bool tried_format = SDL_FALSE;
|
||||||
|
SDL_bool iscapture = this->iscapture;
|
||||||
SDL_AudioFormat test_format = SDL_FirstAudioFormat(this->spec.format);
|
SDL_AudioFormat test_format = SDL_FirstAudioFormat(this->spec.format);
|
||||||
LPGUID guid = (LPGUID) handle;
|
LPGUID guid = (LPGUID) handle;
|
||||||
DWORD bufsize;
|
DWORD bufsize;
|
||||||
|
|
|
@ -114,7 +114,7 @@ DISKAUDIO_CloseDevice(_THIS)
|
||||||
|
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
get_filename(const int iscapture, const char *devname)
|
get_filename(const SDL_bool iscapture, const char *devname)
|
||||||
{
|
{
|
||||||
if (devname == NULL) {
|
if (devname == NULL) {
|
||||||
devname = SDL_getenv(iscapture ? DISKENVR_INFILE : DISKENVR_OUTFILE);
|
devname = SDL_getenv(iscapture ? DISKENVR_INFILE : DISKENVR_OUTFILE);
|
||||||
|
@ -126,9 +126,10 @@ get_filename(const int iscapture, const char *devname)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
DISKAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
DISKAUDIO_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
/* handle != NULL means "user specified the placeholder name on the fake detected device list" */
|
/* handle != NULL means "user specified the placeholder name on the fake detected device list" */
|
||||||
|
SDL_bool iscapture = _this->iscapture;
|
||||||
const char *fname = get_filename(iscapture, handle ? NULL : devname);
|
const char *fname = get_filename(iscapture, handle ? NULL : devname);
|
||||||
const char *envr = SDL_getenv(DISKENVR_IODELAY);
|
const char *envr = SDL_getenv(DISKENVR_IODELAY);
|
||||||
|
|
||||||
|
|
|
@ -68,8 +68,9 @@ DSP_CloseDevice(_THIS)
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
DSP_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
DSP_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
|
SDL_bool iscapture = this->iscapture;
|
||||||
const int flags = ((iscapture) ? OPEN_FLAGS_INPUT : OPEN_FLAGS_OUTPUT);
|
const int flags = ((iscapture) ? OPEN_FLAGS_INPUT : OPEN_FLAGS_OUTPUT);
|
||||||
int format;
|
int format;
|
||||||
int value;
|
int value;
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#include "SDL_dummyaudio.h"
|
#include "SDL_dummyaudio.h"
|
||||||
|
|
||||||
static int
|
static int
|
||||||
DUMMYAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
DUMMYAUDIO_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
_this->hidden = (void *) 0x1; /* just something non-NULL */
|
_this->hidden = (void *) 0x1; /* just something non-NULL */
|
||||||
return 0; /* always succeeds. */
|
return 0; /* always succeeds. */
|
||||||
|
|
|
@ -192,10 +192,11 @@ EMSCRIPTENAUDIO_CloseDevice(_THIS)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
EMSCRIPTENAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
EMSCRIPTENAUDIO_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
SDL_bool valid_format = SDL_FALSE;
|
SDL_bool valid_format = SDL_FALSE;
|
||||||
SDL_AudioFormat test_format;
|
SDL_AudioFormat test_format;
|
||||||
|
SDL_bool iscapture = this->iscapture;
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
/* based on parts of library_sdl.js */
|
/* based on parts of library_sdl.js */
|
||||||
|
|
|
@ -208,7 +208,7 @@ get_progname(void)
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ESD_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
ESD_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
esd_format_t format = (ESD_STREAM | ESD_PLAY);
|
esd_format_t format = (ESD_STREAM | ESD_PLAY);
|
||||||
SDL_AudioFormat test_format = 0;
|
SDL_AudioFormat test_format = 0;
|
||||||
|
|
|
@ -174,7 +174,7 @@ SDL_FS_CloseDevice(_THIS)
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
SDL_FS_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
SDL_FS_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
int bytes;
|
int bytes;
|
||||||
SDL_AudioFormat test_format = 0, format = 0;
|
SDL_AudioFormat test_format = 0, format = 0;
|
||||||
|
|
|
@ -120,7 +120,7 @@ UnmaskSignals(sigset_t * omask)
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
HAIKUAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
HAIKUAUDIO_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
int valid_datatype = 0;
|
int valid_datatype = 0;
|
||||||
media_raw_audio_format format;
|
media_raw_audio_format format;
|
||||||
|
|
|
@ -280,12 +280,13 @@ JACK_CloseDevice(_THIS)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
JACK_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
JACK_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
/* Note that JACK uses "output" for capture devices (they output audio
|
/* Note that JACK uses "output" for capture devices (they output audio
|
||||||
data to us) and "input" for playback (we input audio data to them).
|
data to us) and "input" for playback (we input audio data to them).
|
||||||
Likewise, SDL's playback port will be "output" (we write data out)
|
Likewise, SDL's playback port will be "output" (we write data out)
|
||||||
and capture will be "input" (we read data in). */
|
and capture will be "input" (we read data in). */
|
||||||
|
SDL_bool iscapture = this->iscapture;
|
||||||
const unsigned long sysportflags = iscapture ? JackPortIsOutput : JackPortIsInput;
|
const unsigned long sysportflags = iscapture ? JackPortIsOutput : JackPortIsInput;
|
||||||
const unsigned long sdlportflags = iscapture ? JackPortIsInput : JackPortIsOutput;
|
const unsigned long sdlportflags = iscapture ? JackPortIsInput : JackPortIsOutput;
|
||||||
const JackProcessCallback callback = iscapture ? jackProcessCaptureCallback : jackProcessPlaybackCallback;
|
const JackProcessCallback callback = iscapture ? jackProcessCaptureCallback : jackProcessPlaybackCallback;
|
||||||
|
|
|
@ -99,7 +99,7 @@ static void NACLAUDIO_CloseDevice(SDL_AudioDevice *device) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
NACLAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture) {
|
NACLAUDIO_OpenDevice(_THIS, void *handle, const char *devname) {
|
||||||
PP_Instance instance = PSGetInstanceId();
|
PP_Instance instance = PSGetInstanceId();
|
||||||
const PPB_Audio *ppb_audio = PSInterfaceAudio();
|
const PPB_Audio *ppb_audio = PSInterfaceAudio();
|
||||||
const PPB_AudioConfig *ppb_audiocfg = PSInterfaceAudioConfig();
|
const PPB_AudioConfig *ppb_audiocfg = PSInterfaceAudioConfig();
|
||||||
|
|
|
@ -331,10 +331,11 @@ find_device(_THIS)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
NAS_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
NAS_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
AuElement elms[3];
|
AuElement elms[3];
|
||||||
int buffer_size;
|
int buffer_size;
|
||||||
|
SDL_bool iscapture = this->iscapture;
|
||||||
SDL_AudioFormat test_format, format;
|
SDL_AudioFormat test_format, format;
|
||||||
|
|
||||||
/* Initialize all variables that we clean on shutdown */
|
/* Initialize all variables that we clean on shutdown */
|
||||||
|
|
|
@ -202,8 +202,9 @@ NETBSDAUDIO_CloseDevice(_THIS)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
NETBSDAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
NETBSDAUDIO_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
|
SDL_bool iscapture = this->iscapture;
|
||||||
SDL_AudioFormat format = 0;
|
SDL_AudioFormat format = 0;
|
||||||
audio_info_t info, hwinfo;
|
audio_info_t info, hwinfo;
|
||||||
struct audio_prinfo *prinfo = iscapture ? &info.record : &info.play;
|
struct audio_prinfo *prinfo = iscapture ? &info.record : &info.play;
|
||||||
|
|
|
@ -583,14 +583,14 @@ failed:
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
openslES_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
openslES_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
this->hidden = (struct SDL_PrivateAudioData *) SDL_calloc(1, (sizeof *this->hidden));
|
this->hidden = (struct SDL_PrivateAudioData *) SDL_calloc(1, (sizeof *this->hidden));
|
||||||
if (this->hidden == NULL) {
|
if (this->hidden == NULL) {
|
||||||
return SDL_OutOfMemory();
|
return SDL_OutOfMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iscapture) {
|
if (this->iscapture) {
|
||||||
LOGI("openslES_OpenDevice() %s for capture", devname);
|
LOGI("openslES_OpenDevice() %s for capture", devname);
|
||||||
return openslES_CreatePCMRecorder(this);
|
return openslES_CreatePCMRecorder(this);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -248,8 +248,7 @@ static void OS2_CloseDevice(_THIS)
|
||||||
SDL_free(pAData);
|
SDL_free(pAData);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int OS2_OpenDevice(_THIS, void *handle, const char *devname,
|
static int OS2_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
int iscapture)
|
|
||||||
{
|
{
|
||||||
SDL_PrivateAudioData *pAData;
|
SDL_PrivateAudioData *pAData;
|
||||||
SDL_AudioFormat SDLAudioFmt;
|
SDL_AudioFormat SDLAudioFmt;
|
||||||
|
@ -258,6 +257,7 @@ static int OS2_OpenDevice(_THIS, void *handle, const char *devname,
|
||||||
ULONG ulRC;
|
ULONG ulRC;
|
||||||
ULONG ulIdx;
|
ULONG ulIdx;
|
||||||
BOOL new_freq;
|
BOOL new_freq;
|
||||||
|
SDL_bool iscapture = _this->iscapture;
|
||||||
|
|
||||||
new_freq = FALSE;
|
new_freq = FALSE;
|
||||||
SDL_zero(stMCIAmpOpen);
|
SDL_zero(stMCIAmpOpen);
|
||||||
|
@ -298,7 +298,7 @@ static int OS2_OpenDevice(_THIS, void *handle, const char *devname,
|
||||||
}
|
}
|
||||||
pAData->usDeviceId = stMCIAmpOpen.usDeviceID;
|
pAData->usDeviceId = stMCIAmpOpen.usDeviceID;
|
||||||
|
|
||||||
if (iscapture != 0) {
|
if (iscapture) {
|
||||||
MCI_CONNECTOR_PARMS stMCIConnector;
|
MCI_CONNECTOR_PARMS stMCIConnector;
|
||||||
MCI_AMP_SET_PARMS stMCIAmpSet;
|
MCI_AMP_SET_PARMS stMCIAmpSet;
|
||||||
BOOL fLineIn = _getEnvULong("SDL_AUDIO_LINEIN", 1, 0);
|
BOOL fLineIn = _getEnvULong("SDL_AUDIO_LINEIN", 1, 0);
|
||||||
|
@ -346,7 +346,7 @@ static int OS2_OpenDevice(_THIS, void *handle, const char *devname,
|
||||||
pAData->stMCIMixSetup.ulSamplesPerSec = _this->spec.freq;
|
pAData->stMCIMixSetup.ulSamplesPerSec = _this->spec.freq;
|
||||||
pAData->stMCIMixSetup.ulChannels = _this->spec.channels;
|
pAData->stMCIMixSetup.ulChannels = _this->spec.channels;
|
||||||
pAData->stMCIMixSetup.ulDeviceType = MCI_DEVTYPE_WAVEFORM_AUDIO;
|
pAData->stMCIMixSetup.ulDeviceType = MCI_DEVTYPE_WAVEFORM_AUDIO;
|
||||||
if (iscapture == 0) {
|
if (!iscapture) {
|
||||||
pAData->stMCIMixSetup.ulFormatMode= MCI_PLAY;
|
pAData->stMCIMixSetup.ulFormatMode= MCI_PLAY;
|
||||||
pAData->stMCIMixSetup.pmixEvent = cbAudioWriteEvent;
|
pAData->stMCIMixSetup.pmixEvent = cbAudioWriteEvent;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -223,7 +223,7 @@ PAUDIO_CloseDevice(_THIS)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
PAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
PAUDIO_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
const char *workaround = SDL_getenv("SDL_DSP_NOSELECT");
|
const char *workaround = SDL_getenv("SDL_DSP_NOSELECT");
|
||||||
char audiodev[1024];
|
char audiodev[1024];
|
||||||
|
|
|
@ -1027,7 +1027,7 @@ static const struct pw_stream_events stream_input_events = { PW_VERSION_STREAM_
|
||||||
.process = input_callback };
|
.process = input_callback };
|
||||||
|
|
||||||
static int
|
static int
|
||||||
PIPEWIRE_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
PIPEWIRE_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* NOTE: The PW_STREAM_FLAG_RT_PROCESS flag can be set to call the stream
|
* NOTE: The PW_STREAM_FLAG_RT_PROCESS flag can be set to call the stream
|
||||||
|
@ -1048,6 +1048,7 @@ PIPEWIRE_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
||||||
const char * app_name, *stream_name, *stream_role, *error;
|
const char * app_name, *stream_name, *stream_role, *error;
|
||||||
const Uint32 node_id = this->handle == NULL ? PW_ID_ANY : PW_HANDLE_TO_ID(this->handle);
|
const Uint32 node_id = this->handle == NULL ? PW_ID_ANY : PW_HANDLE_TO_ID(this->handle);
|
||||||
enum pw_stream_state state;
|
enum pw_stream_state state;
|
||||||
|
SDL_bool iscapture = this->iscapture;
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
/* Clamp the period size to sane values */
|
/* Clamp the period size to sane values */
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
#define PSPAUDIO_DRIVER_NAME "psp"
|
#define PSPAUDIO_DRIVER_NAME "psp"
|
||||||
|
|
||||||
static int
|
static int
|
||||||
PSPAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
PSPAUDIO_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
int format, mixlen, i;
|
int format, mixlen, i;
|
||||||
|
|
||||||
|
|
|
@ -522,7 +522,7 @@ SourceDeviceNameCallback(pa_context *c, const pa_source_info *i, int is_last, vo
|
||||||
}
|
}
|
||||||
|
|
||||||
static SDL_bool
|
static SDL_bool
|
||||||
FindDeviceName(struct SDL_PrivateAudioData *h, const int iscapture, void *handle)
|
FindDeviceName(struct SDL_PrivateAudioData *h, const SDL_bool iscapture, void *handle)
|
||||||
{
|
{
|
||||||
const uint32_t idx = ((uint32_t) ((size_t) handle)) - 1;
|
const uint32_t idx = ((uint32_t) ((size_t) handle)) - 1;
|
||||||
|
|
||||||
|
@ -544,7 +544,7 @@ FindDeviceName(struct SDL_PrivateAudioData *h, const int iscapture, void *handle
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
PULSEAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
PULSEAUDIO_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
struct SDL_PrivateAudioData *h = NULL;
|
struct SDL_PrivateAudioData *h = NULL;
|
||||||
Uint16 test_format = 0;
|
Uint16 test_format = 0;
|
||||||
|
@ -553,6 +553,7 @@ PULSEAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
||||||
pa_channel_map pacmap;
|
pa_channel_map pacmap;
|
||||||
pa_stream_flags_t flags = 0;
|
pa_stream_flags_t flags = 0;
|
||||||
const char *name = NULL;
|
const char *name = NULL;
|
||||||
|
SDL_bool iscapture = this->iscapture;
|
||||||
int state = 0;
|
int state = 0;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
|
|
|
@ -121,7 +121,7 @@ QSA_WaitDevice(_THIS)
|
||||||
/* For example, Vortex 8820 audio driver stucks on second DAC because */
|
/* For example, Vortex 8820 audio driver stucks on second DAC because */
|
||||||
/* it doesn't exist ! */
|
/* it doesn't exist ! */
|
||||||
result = SDL_IOReady(this->hidden->audio_fd,
|
result = SDL_IOReady(this->hidden->audio_fd,
|
||||||
this->hidden->iscapture ? SDL_IOR_READ : SDL_IOR_WRITE,
|
this->iscapture ? SDL_IOR_READ : SDL_IOR_WRITE,
|
||||||
2 * 1000);
|
2 * 1000);
|
||||||
switch (result) {
|
switch (result) {
|
||||||
case -1:
|
case -1:
|
||||||
|
@ -180,7 +180,7 @@ QSA_PlayDevice(_THIS)
|
||||||
} else {
|
} else {
|
||||||
if ((errno == EINVAL) || (errno == EIO)) {
|
if ((errno == EINVAL) || (errno == EIO)) {
|
||||||
SDL_zero(cstatus);
|
SDL_zero(cstatus);
|
||||||
if (!this->hidden->iscapture) {
|
if (!this->iscapture) {
|
||||||
cstatus.channel = SND_PCM_CHANNEL_PLAYBACK;
|
cstatus.channel = SND_PCM_CHANNEL_PLAYBACK;
|
||||||
} else {
|
} else {
|
||||||
cstatus.channel = SND_PCM_CHANNEL_CAPTURE;
|
cstatus.channel = SND_PCM_CHANNEL_CAPTURE;
|
||||||
|
@ -196,7 +196,7 @@ QSA_PlayDevice(_THIS)
|
||||||
|
|
||||||
if ((cstatus.status == SND_PCM_STATUS_UNDERRUN) ||
|
if ((cstatus.status == SND_PCM_STATUS_UNDERRUN) ||
|
||||||
(cstatus.status == SND_PCM_STATUS_READY)) {
|
(cstatus.status == SND_PCM_STATUS_READY)) {
|
||||||
if (!this->hidden->iscapture) {
|
if (!this->iscapture) {
|
||||||
status =
|
status =
|
||||||
snd_pcm_plugin_prepare(this->hidden->
|
snd_pcm_plugin_prepare(this->hidden->
|
||||||
audio_handle,
|
audio_handle,
|
||||||
|
@ -240,7 +240,7 @@ static void
|
||||||
QSA_CloseDevice(_THIS)
|
QSA_CloseDevice(_THIS)
|
||||||
{
|
{
|
||||||
if (this->hidden->audio_handle != NULL) {
|
if (this->hidden->audio_handle != NULL) {
|
||||||
if (!this->hidden->iscapture) {
|
if (!this->iscapture) {
|
||||||
/* Finish playing available samples */
|
/* Finish playing available samples */
|
||||||
snd_pcm_plugin_flush(this->hidden->audio_handle,
|
snd_pcm_plugin_flush(this->hidden->audio_handle,
|
||||||
SND_PCM_CHANNEL_PLAYBACK);
|
SND_PCM_CHANNEL_PLAYBACK);
|
||||||
|
@ -257,9 +257,10 @@ QSA_CloseDevice(_THIS)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
QSA_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
QSA_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
const QSA_Device *device = (const QSA_Device *) handle;
|
const QSA_Device *device = (const QSA_Device *) handle;
|
||||||
|
SDL_Bool iscapture = this->iscapture;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
int format = 0;
|
int format = 0;
|
||||||
SDL_AudioFormat test_format = 0;
|
SDL_AudioFormat test_format = 0;
|
||||||
|
@ -280,9 +281,6 @@ QSA_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
||||||
/* Initialize channel transfer parameters to default */
|
/* Initialize channel transfer parameters to default */
|
||||||
QSA_InitAudioParams(&cparams);
|
QSA_InitAudioParams(&cparams);
|
||||||
|
|
||||||
/* Initialize channel direction: capture or playback */
|
|
||||||
this->hidden->iscapture = iscapture ? SDL_TRUE : SDL_FALSE;
|
|
||||||
|
|
||||||
if (device != NULL) {
|
if (device != NULL) {
|
||||||
/* Open requested audio device */
|
/* Open requested audio device */
|
||||||
this->hidden->deviceno = device->deviceno;
|
this->hidden->deviceno = device->deviceno;
|
||||||
|
@ -407,7 +405,7 @@ QSA_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
||||||
|
|
||||||
/* Make sure channel is setup right one last time */
|
/* Make sure channel is setup right one last time */
|
||||||
SDL_zero(csetup);
|
SDL_zero(csetup);
|
||||||
if (!this->hidden->iscapture) {
|
if (!this->iscapture) {
|
||||||
csetup.channel = SND_PCM_CHANNEL_PLAYBACK;
|
csetup.channel = SND_PCM_CHANNEL_PLAYBACK;
|
||||||
} else {
|
} else {
|
||||||
csetup.channel = SND_PCM_CHANNEL_CAPTURE;
|
csetup.channel = SND_PCM_CHANNEL_CAPTURE;
|
||||||
|
@ -443,7 +441,7 @@ QSA_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
||||||
this->hidden->pcm_len);
|
this->hidden->pcm_len);
|
||||||
|
|
||||||
/* get the file descriptor */
|
/* get the file descriptor */
|
||||||
if (!this->hidden->iscapture) {
|
if (!this->iscapture) {
|
||||||
this->hidden->audio_fd =
|
this->hidden->audio_fd =
|
||||||
snd_pcm_file_descriptor(this->hidden->audio_handle,
|
snd_pcm_file_descriptor(this->hidden->audio_handle,
|
||||||
SND_PCM_CHANNEL_PLAYBACK);
|
SND_PCM_CHANNEL_PLAYBACK);
|
||||||
|
@ -458,7 +456,7 @@ QSA_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Prepare an audio channel */
|
/* Prepare an audio channel */
|
||||||
if (!this->hidden->iscapture) {
|
if (!this->iscapture) {
|
||||||
/* Prepare audio playback */
|
/* Prepare audio playback */
|
||||||
status =
|
status =
|
||||||
snd_pcm_plugin_prepare(this->hidden->audio_handle,
|
snd_pcm_plugin_prepare(this->hidden->audio_handle,
|
||||||
|
|
|
@ -33,9 +33,6 @@
|
||||||
|
|
||||||
struct SDL_PrivateAudioData
|
struct SDL_PrivateAudioData
|
||||||
{
|
{
|
||||||
/* SDL capture state */
|
|
||||||
SDL_bool iscapture;
|
|
||||||
|
|
||||||
/* The audio device handle */
|
/* The audio device handle */
|
||||||
int cardno;
|
int cardno;
|
||||||
int deviceno;
|
int deviceno;
|
||||||
|
|
|
@ -237,10 +237,11 @@ SNDIO_CloseDevice(_THIS)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
SNDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
SNDIO_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
SDL_AudioFormat test_format = SDL_FirstAudioFormat(this->spec.format);
|
SDL_AudioFormat test_format = SDL_FirstAudioFormat(this->spec.format);
|
||||||
struct sio_par par;
|
struct sio_par par;
|
||||||
|
SDL_bool iscapture = this->iscapture;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
this->hidden = (struct SDL_PrivateAudioData *)
|
this->hidden = (struct SDL_PrivateAudioData *)
|
||||||
|
|
|
@ -188,11 +188,12 @@ SUNAUDIO_CloseDevice(_THIS)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
SUNAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
SUNAUDIO_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
#ifdef AUDIO_SETINFO
|
#ifdef AUDIO_SETINFO
|
||||||
int enc;
|
int enc;
|
||||||
#endif
|
#endif
|
||||||
|
SDL_bool iscapture = this->iscapture;
|
||||||
int desired_freq = 0;
|
int desired_freq = 0;
|
||||||
const int flags = ((iscapture) ? OPEN_FLAGS_INPUT : OPEN_FLAGS_OUTPUT);
|
const int flags = ((iscapture) ? OPEN_FLAGS_INPUT : OPEN_FLAGS_OUTPUT);
|
||||||
SDL_AudioFormat format = 0;
|
SDL_AudioFormat format = 0;
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
#define VITAAUD_DRIVER_NAME "vita"
|
#define VITAAUD_DRIVER_NAME "vita"
|
||||||
|
|
||||||
static int
|
static int
|
||||||
VITAAUD_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
VITAAUD_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
int format, mixlen, i, port = SCE_AUDIO_OUT_PORT_TYPE_MAIN;
|
int format, mixlen, i, port = SCE_AUDIO_OUT_PORT_TYPE_MAIN;
|
||||||
int vols[2] = {SCE_AUDIO_MAX_VOLUME, SCE_AUDIO_MAX_VOLUME};
|
int vols[2] = {SCE_AUDIO_MAX_VOLUME, SCE_AUDIO_MAX_VOLUME};
|
||||||
|
|
|
@ -641,7 +641,7 @@ WASAPI_PrepDevice(_THIS, const SDL_bool updatestream)
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
WASAPI_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
WASAPI_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
LPCWSTR devid = (LPCWSTR) handle;
|
LPCWSTR devid = (LPCWSTR) handle;
|
||||||
|
|
||||||
|
@ -656,7 +656,7 @@ WASAPI_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
||||||
WASAPI_RefDevice(this); /* so CloseDevice() will unref to zero. */
|
WASAPI_RefDevice(this); /* so CloseDevice() will unref to zero. */
|
||||||
|
|
||||||
if (!devid) { /* is default device? */
|
if (!devid) { /* is default device? */
|
||||||
this->hidden->default_device_generation = SDL_AtomicGet(iscapture ? &WASAPI_DefaultCaptureGeneration : &WASAPI_DefaultPlaybackGeneration);
|
this->hidden->default_device_generation = SDL_AtomicGet(this->iscapture ? &WASAPI_DefaultCaptureGeneration : &WASAPI_DefaultPlaybackGeneration);
|
||||||
} else {
|
} else {
|
||||||
this->hidden->devid = SDL_wcsdup(devid);
|
this->hidden->devid = SDL_wcsdup(devid);
|
||||||
if (!this->hidden->devid) {
|
if (!this->hidden->devid) {
|
||||||
|
|
|
@ -283,10 +283,10 @@ PrepWaveFormat(_THIS, UINT devId, WAVEFORMATEX *pfmt, const int iscapture)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
WINMM_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
WINMM_OpenDevice(_THIS, void *handle, const char *devname)
|
||||||
{
|
{
|
||||||
SDL_AudioFormat test_format = SDL_FirstAudioFormat(this->spec.format);
|
SDL_AudioFormat test_format = SDL_FirstAudioFormat(this->spec.format);
|
||||||
int valid_datatype = 0;
|
SDL_bool valid_datatype = SDL_FALSE, iscapture = this->iscapture;
|
||||||
MMRESULT result;
|
MMRESULT result;
|
||||||
WAVEFORMATEX waveformat;
|
WAVEFORMATEX waveformat;
|
||||||
UINT devId = WAVE_MAPPER; /* WAVE_MAPPER == choose system's default */
|
UINT devId = WAVE_MAPPER; /* WAVE_MAPPER == choose system's default */
|
||||||
|
@ -321,7 +321,7 @@ WINMM_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
||||||
case AUDIO_F32:
|
case AUDIO_F32:
|
||||||
this->spec.format = test_format;
|
this->spec.format = test_format;
|
||||||
if (PrepWaveFormat(this, devId, &waveformat, iscapture)) {
|
if (PrepWaveFormat(this, devId, &waveformat, iscapture)) {
|
||||||
valid_datatype = 1;
|
valid_datatype = SDL_TRUE;
|
||||||
} else {
|
} else {
|
||||||
test_format = SDL_NextAudioFormat();
|
test_format = SDL_NextAudioFormat();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue