File: gvDevice.h

package info (click to toggle)
openmohaa 0.81.1%2Bdfsg-2
  • links: PTS, VCS
  • area: contrib
  • in suites: trixie
  • size: 29,124 kB
  • sloc: ansic: 270,865; cpp: 250,173; sh: 234; asm: 141; xml: 64; makefile: 7
file content (90 lines) | stat: -rw-r--r-- 2,939 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
GameSpy Voice2 SDK
Dan "Mr. Pants" Schoenblum
dan@gamespy.com

Copyright 2004 GameSpy Industries, Inc

devsupport@gamespy.com
http://gamespy.net
*/

#ifndef _GV_DEVICE_H_
#define _GV_DEVICE_H_

#include "gvMain.h"

// amount of time to keep capturing even after voice drops below the capture threshold
// makes sure that speech that trails off, or slightly dips in volume, is still captured
#define GVI_HOLD_THRESHOLD_FRAMES       20

// buffer sizes for capture and playback
#define GVI_PLAYBACK_BUFFER_MILLISECONDS     200
#define GVI_CAPTURE_BUFFER_MILLISECONDS      1000

/***********
** DEVICE **
***********/
typedef struct
{
	void (* m_freeDevice)(GVDevice device);

	GVBool (* m_startDevice)(GVDevice device, GVDeviceType type);
	void (* m_stopDevice)(GVDevice device, GVDeviceType type);
	GVBool (* m_isDeviceStarted)(GVDevice device, GVDeviceType type);

	void (* m_setDeviceVolume)(GVDevice device, GVDeviceType type, GVScalar volume);
	GVScalar (* m_getDeviceVolume)(GVDevice device, GVDeviceType type);

	void (* m_setCaptureThreshold)(GVDevice device, GVScalar threshold);
	GVScalar (* m_getCaptureThreshold)(GVDevice device);

	GVBool (*m_capturePacket)(GVDevice device, GVByte * packet, int * len, GVFrameStamp * frameStamp, GVScalar * volume);
	int (* m_getAvailableCaptureBytes)(GVDevice device);

	void (* m_playPacket)(GVDevice device, const GVByte * packet, int len, GVSource source, GVFrameStamp frameStamp, GVBool mute);
	
	GVBool (* m_isSourceTalking)(GVDevice device, GVSource source);
	int (* m_listTalkingSources)(GVDevice device, GVSource sources[], int maxSources);

	int (* m_getNumChannels)(GVDevice device, GVDeviceType type);
	void (* m_getChannelName)(GVDevice device, GVDeviceType type, int channel, gsi_char name[GV_CHANNEL_NAME_LEN]);

	void (* m_setChannel)(GVDevice device, GVDeviceType type, int channel);
	int (* m_getChannel)(GVDevice device, GVDeviceType type);
} GVIDeviceMethods;

typedef struct GVIDevice
{
	GVDeviceID m_deviceID;
	GVHardwareType m_hardwareType;
	GVDeviceType m_types;
	GVIDeviceMethods m_methods;
	gvUnpluggedCallback m_unpluggedCallback;
	gvFilterCallback m_captureFilterCallback;
	gvFilterCallback m_playbackFilterCallback;
	void * m_data;
	GVCaptureMode m_captureMode;
	GVScalar m_savedCaptureThreshold;
} GVIDevice;

GVIDevice * gviNewDevice(GVDeviceID deviceID, GVHardwareType hardwareType, GVDeviceType types, int dataSize);
void gviFreeDevice(GVIDevice * device);

void gviDeviceUnplugged(GVIDevice * device);

/****************
** DEVICE LIST **
****************/
typedef DArray GVIDeviceList;

GVIDeviceList gviNewDeviceList(ArrayElementFreeFn elemFreeFn);
void gviFreeDeviceList(GVIDeviceList devices);

void gviAppendDeviceToList(GVIDeviceList devices, GVIDevice * device);
void gviDeleteDeviceFromList(GVIDeviceList devices, GVIDevice * device);

int gviGetNumDevices(GVIDeviceList devices);
GVIDevice * gviGetDevice(GVIDeviceList devices, int index);

#endif