19#include "../common/gsCommon.h"
21#if defined(__cplusplus)
27#define GV_BYTES_PER_SAMPLE (sizeof(GVSample) / sizeof(GVByte))
28#define GV_BITS_PER_SAMPLE (GV_BYTES_PER_SAMPLE * 8)
30#define GV_DEVICE_NAME_LEN 64
31#define GV_CHANNEL_NAME_LEN 64
35#define GV_CAPTURE_AND_PLAYBACK (GV_CAPTURE|GV_PLAYBACK)
37#define GVRate_8KHz 8000
38#define GVRate_16KHz 16000
40#define GVRate_11KHz 11025
43#define GV_SAMPLES_PER_SECOND (gvGetSampleRate())
44#define GV_BYTES_PER_SECOND (gvGetSampleRate() * GV_BYTES_PER_SAMPLE)
51 GVCodecSuperHighQuality,
55 GVCodecSuperLowBandwidth
60 GVHardwareDirectSound,
63 GVHardwarePS2Microphone,
64 GVHardwarePS2Speakers,
74 GVCaptureModeThreshold,
75 GVCaptureModePushToTalk
83typedef gsi_i16 GVSample;
87#if defined(_PSP) || defined(_PS2) || defined(_PS3)
88 typedef float GVScalar;
90 typedef double GVScalar;
92typedef gsi_u16 GVFrameStamp;
93typedef void * GVDecoderData;
94typedef int GVDeviceType;
97#if defined(GV_CUSTOM_SOURCE_TYPE)
98typedef GV_CUSTOM_SOURCE_TYPE GVSource;
104typedef GUID GVDeviceID;
106typedef int GVDeviceID;
112 gsi_char m_name[GV_DEVICE_NAME_LEN];
113 GVDeviceType m_deviceType;
114 GVDeviceType m_defaultDevice;
115 GVHardwareType m_hardwareType;
120 int m_samplesPerFrame;
121 int m_encodedFrameSize;
123 GVBool (* m_newDecoderCallback)(GVDecoderData * data);
124 void (* m_freeDecoderCallback)(GVDecoderData data);
126 void (* m_encodeCallback)(GVByte * out,
const GVSample * in);
127 void (* m_decodeAddCallback)(GVSample * out,
const GVByte * in, GVDecoderData data);
128 void (* m_decodeSetCallback)(GVSample * out,
const GVByte * in, GVDecoderData data);
134extern const GVDeviceID GVDefaultCaptureDeviceID;
135extern const GVDeviceID GVDefaultPlaybackDeviceID;
137extern const GVDeviceID GVPS2Spu2DeviceID;
143GVBool gvStartup(HWND hWnd);
145GVBool gvStartup(
void);
153GVBool gvSetCodec(GVCodec codec);
156void gvGetCodecInfo(
int * samplesPerFrame,
int * encodedFrameSize,
int * bitsPerSecond);
160void gvSetSampleRate(GVRate sampleRate);
161GVRate gvGetSampleRate(
void);
165int gvListDevices(
GVDeviceInfo devices[],
int maxDevices, GVDeviceType types);
168GVBool gvRunSetupWizard(GVDeviceID captureDeviceID, GVDeviceID playbackDeviceID);
169GVBool gvAreDevicesSetup(GVDeviceID captureDeviceID, GVDeviceID playbackDeviceID);
172GVDevice gvNewDevice(GVDeviceID deviceID, GVDeviceType type);
173void gvFreeDevice(GVDevice device);
175GVBool gvStartDevice(GVDevice device, GVDeviceType type);
176void gvStopDevice(GVDevice device, GVDeviceType type);
177GVBool gvIsDeviceStarted(GVDevice device, GVDeviceType type);
179void gvSetDeviceVolume(GVDevice device, GVDeviceType type, GVScalar volume);
180GVScalar gvGetDeviceVolume(GVDevice device, GVDeviceType type);
182typedef void (* gvUnpluggedCallback)(GVDevice device);
183void gvSetUnpluggedCallback(GVDevice device, gvUnpluggedCallback unpluggedCallback);
185typedef void (* gvFilterCallback)(GVDevice device, GVSample * audio, GVFrameStamp frameStamp);
186void gvSetFilter(GVDevice device, GVDeviceType type, gvFilterCallback callback);
191GVBool gvCapturePacket(GVDevice device, GVByte * packet,
int * len, GVFrameStamp * frameStamp, GVScalar * volume);
192int gvGetAvailableCaptureBytes(GVDevice device);
194void gvSetCaptureThreshold(GVDevice device, GVScalar threshold);
195GVScalar gvGetCaptureThreshold(GVDevice device);
197void gvSetCaptureMode(GVDevice device, GVCaptureMode captureMode);
198GVCaptureMode gvGetCaptureMode(GVDevice device);
200void gvSetPushToTalk(GVDevice device, GVBool talkOn);
201GVBool gvGetPushToTalk(GVDevice device);
205void gvPlayPacket(GVDevice device,
const GVByte * packet,
int len, GVSource source, GVFrameStamp frameStamp, GVBool mute);
207GVBool gvIsSourceTalking(GVDevice device, GVSource source);
208int gvListTalkingSources(GVDevice device, GVSource sources[],
int maxSources);
210void gvSetGlobalMute(GVBool mute);
211GVBool gvGetGlobalMute(
void);
215GVDevice gvNewCustomDevice(GVDeviceType type);
219GVBool gvGetCustomPlaybackAudio(GVDevice device, GVSample * audio,
int numSamples);
220GVBool gvSetCustomCaptureAudio(GVDevice device,
const GVSample * audio,
int numSamples,
221 GVByte * packet,
int * packetLen, GVFrameStamp * frameStamp, GVScalar * volume);
225int gvGetNumChannels(GVDevice device, GVDeviceType type);
226void gvGetChannelName(GVDevice device, GVDeviceType type,
int channel, gsi_char name[GV_CHANNEL_NAME_LEN]);
227void gvSetChannel(GVDevice device, GVDeviceType type,
int channel);
228int gvGetChannel(GVDevice device, GVDeviceType type);
230#if defined(__cplusplus)