static UINT audin_alsa_free(IAudinDevice* device)
{
AudinALSADevice* alsa = (AudinALSADevice*) device;
- free(alsa->device_name);
+
+ if (alsa)
+ free(alsa->device_name);
+
free(alsa);
return CHANNEL_RC_OK;
}
static BOOL audin_alsa_format_supported(IAudinDevice* device,
const AUDIO_FORMAT* format)
{
+ if (!device || !format)
+ return FALSE;
+
switch (format->wFormatTag)
{
case WAVE_FORMAT_PCM:
UINT32 FramesPerPacket)
{
AudinALSADevice* alsa = (AudinALSADevice*) device;
+
+ if (!alsa || !format)
+ return ERROR_INVALID_PARAMETER;
+
alsa->aformat = *format;
alsa->frames_per_packet = FramesPerPacket;
void* user_data)
{
AudinALSADevice* alsa = (AudinALSADevice*) device;
+
+ if (!device || !receive || !user_data)
+ return ERROR_INVALID_PARAMETER;
+
alsa->receive = receive;
alsa->user_data = user_data;
UINT error = CHANNEL_RC_OK;
AudinALSADevice* alsa = (AudinALSADevice*) device;
+ if (!alsa)
+ return ERROR_INVALID_PARAMETER;
+
if (alsa->stopEvent)
{
SetEvent(alsa->stopEvent);
static UINT audin_plugin_initialize(IWTSPlugin* pPlugin, IWTSVirtualChannelManager* pChannelMgr)
{
AUDIN_PLUGIN* audin = (AUDIN_PLUGIN*) pPlugin;
+
+ if (!audin)
+ return CHANNEL_RC_BAD_CHANNEL_HANDLE;
+
+ if (!pChannelMgr)
+ return ERROR_INVALID_PARAMETER;
+
WLog_Print(audin->log, WLOG_TRACE, "...");
audin->listener_callback = (AUDIN_LISTENER_CALLBACK*) calloc(1, sizeof(AUDIN_LISTENER_CALLBACK));
{
AUDIN_PLUGIN* audin = (AUDIN_PLUGIN*) pPlugin;
UINT error = CHANNEL_RC_OK;
+
+ if (!audin)
+ return CHANNEL_RC_BAD_CHANNEL_HANDLE;
+
WLog_Print(audin->log, WLOG_TRACE, "...");
if (audin->device)
static UINT audin_opensles_free(IAudinDevice* device)
{
AudinOpenSLESDevice* opensles = (AudinOpenSLESDevice*) device;
+
+ if (!opensles)
+ return ERROR_INVALID_PARAMETER;
+
WLog_Print(opensles->log, WLOG_DEBUG, "device=%p", (void*) device);
/* The function may have been called out of order,
const AUDIO_FORMAT* format)
{
AudinOpenSLESDevice* opensles = (AudinOpenSLESDevice*) device;
+
+ if (!opensles || !format)
+ return FALSE;
+
WLog_Print(opensles->log, WLOG_DEBUG, "device=%p, format=%p", (void*) opensles, (void*) format);
assert(format);
const AUDIO_FORMAT* format, UINT32 FramesPerPacket)
{
AudinOpenSLESDevice* opensles = (AudinOpenSLESDevice*) device;
+
+ if (!opensles || !format)
+ return ERROR_INVALID_PARAMETER;
+
WLog_Print(opensles->log, WLOG_DEBUG, "device=%p, format=%p, FramesPerPacket=%"PRIu32"",
(void*) device, (void*) format, FramesPerPacket);
assert(format);
void* user_data)
{
AudinOpenSLESDevice* opensles = (AudinOpenSLESDevice*) device;
+
+ if (!opensles || !receive || !user_data)
+ return ERROR_INVALID_PARAMETER;
+
WLog_Print(opensles->log, WLOG_DEBUG, "device=%p, receive=%p, user_data=%p", (void*) device,
(void*) receive,
(void*) user_data);
{
AudinPulseDevice* pulse = (AudinPulseDevice*) device;
+ if (!pulse || !format)
+ return FALSE;
+
if (!pulse->context)
return 0;
pa_sample_spec sample_spec = { 0 };
AudinPulseDevice* pulse = (AudinPulseDevice*) device;
+ if (!pulse || !format)
+ return ERROR_INVALID_PARAMETER;
+
if (!pulse->context)
return ERROR_INVALID_PARAMETER;
{
AudinPulseDevice* pulse = (AudinPulseDevice*) device;
+ if (!pulse)
+ return ERROR_INVALID_PARAMETER;
+
if (pulse->stream)
{
pa_threaded_mainloop_lock(pulse->mainloop);
pa_buffer_attr buffer_attr = { 0 };
AudinPulseDevice* pulse = (AudinPulseDevice*) device;
+ if (!pulse || !receive || !user_data)
+ return ERROR_INVALID_PARAMETER;
+
if (!pulse->context)
return ERROR_INVALID_PARAMETER;
UINT32 i;
AudinWinmmDevice* winmm = (AudinWinmmDevice*) device;
+ if (!winmm)
+ return ERROR_INVALID_PARAMETER;
+
for (i = 0; i < winmm->cFormats; i++)
{
free(winmm->ppwfx[i]);
DWORD status;
UINT error = CHANNEL_RC_OK;
AudinWinmmDevice* winmm = (AudinWinmmDevice*) device;
+
+ if (!winmm)
+ return ERROR_INVALID_PARAMETER;
+
SetEvent(winmm->stopEvent);
status = WaitForSingleObject(winmm->thread, INFINITE);
{
UINT32 i;
AudinWinmmDevice* winmm = (AudinWinmmDevice*) device;
+
+ if (!winmm || !format)
+ return ERROR_INVALID_PARAMETER;
+
winmm->frames_per_packet = FramesPerPacket;
for (i = 0; i < winmm->cFormats; i++)
AudinWinmmDevice* winmm = (AudinWinmmDevice*) device;
PWAVEFORMATEX pwfx;
BYTE* data;
+
+ if (!winmm || !format)
+ return FALSE;
+
pwfx = (PWAVEFORMATEX)malloc(sizeof(WAVEFORMATEX) + format->cbSize);
if (!pwfx)
static UINT audin_winmm_open(IAudinDevice* device, AudinReceive receive, void* user_data)
{
AudinWinmmDevice* winmm = (AudinWinmmDevice*) device;
+
+ if (!winmm || !receive || !user_data)
+ return ERROR_INVALID_PARAMETER;
+
winmm->receive = receive;
winmm->user_data = user_data;