1
0
mirror of https://github.com/Tha14/toxic.git synced 2024-07-01 17:47:52 +02:00
toxic/src/device.h

68 lines
1.9 KiB
C
Raw Normal View History

2014-06-21 02:04:25 +02:00
/*
* Toxic -- Tox Curses Client
*/
/*
* You can have multiple sources (Input devices) but only one output device.
* Pass buffers to output device via write();
* Read from running input device(s) via select()/callback combo.
*/
#ifndef _device_h
#define _device_h
#define MAX_DEVICES 32
#include <inttypes.h>
#include "windows.h"
2014-06-21 02:04:25 +02:00
#define _True 1
#define _False 0
typedef enum DeviceType {
input,
output,
} DeviceType;
typedef enum DeviceError {
de_None,
de_InternalError = -1,
de_InvalidSelection = -2,
de_FailedStart = -3,
de_Busy = -4,
de_AllDevicesBusy = -5,
de_DeviceNotActive = -6,
de_BufferError = -7,
de_AlError = -8,
} DeviceError;
typedef void (*DataHandleCallback) (const int16_t*, uint32_t size, void* data);
DeviceError init_devices(ToxAv* av);
DeviceError terminate_devices();
/* Callback handles ready data from INPUT device */
DeviceError register_device_callback(int32_t call_idx, uint32_t device_idx, DataHandleCallback callback, void* data, _Bool enable_VAD);
2014-06-21 02:04:25 +02:00
void* get_device_callback_data(uint32_t device_idx);
/* toggle device mute */
DeviceError device_mute(DeviceType type, uint32_t device_idx);
DeviceError device_set_VAD_treshold(uint32_t device_idx, float value);
2014-06-21 02:04:25 +02:00
DeviceError set_primary_device(DeviceType type, int32_t selection);
DeviceError open_primary_device(DeviceType type, uint32_t* device_idx);
/* Start device */
DeviceError open_device(DeviceType type, int32_t selection, uint32_t* device_idx);
/* Stop device */
DeviceError close_device(DeviceType type, uint32_t device_idx);
DeviceError playback_device_ready(uint32_t device_idx);
/* Write data to device */
DeviceError write_out(uint32_t device_idx, int16_t* data, uint32_t lenght, uint8_t channels);
void print_devices(ToxWindow* self, DeviceType type);
DeviceError selection_valid(DeviceType type, int32_t selection);
#endif /* _device_h */