FreeRDP
Loading...
Searching...
No Matches
tsmf_audio.h
1
20#ifndef FREERDP_CHANNEL_TSMF_CLIENT_AUDIO_H
21#define FREERDP_CHANNEL_TSMF_CLIENT_AUDIO_H
22
23#include "tsmf_types.h"
24
25typedef struct s_ITSMFAudioDevice ITSMFAudioDevice;
26
28{
29 /* Open the audio device. */
30 WINPR_ATTR_NODISCARD BOOL (*Open)(ITSMFAudioDevice* audio, const char* device);
31 /* Set the audio data format. */
32 WINPR_ATTR_NODISCARD BOOL (*SetFormat)(ITSMFAudioDevice* audio, UINT32 sample_rate,
33 UINT32 channels, UINT32 bits_per_sample);
34 /* Play audio data. */
35 WINPR_ATTR_NODISCARD BOOL (*Play)(ITSMFAudioDevice* audio, const BYTE* data, UINT32 data_size);
36 /* Get the latency of the last written sample, in 100ns */
37 WINPR_ATTR_NODISCARD UINT64 (*GetLatency)(ITSMFAudioDevice* audio);
38 /* Change the playback volume level */
39 WINPR_ATTR_NODISCARD BOOL (*ChangeVolume)(ITSMFAudioDevice* audio, UINT32 newVolume,
40 UINT32 muted);
41 /* Flush queued audio data */
42 WINPR_ATTR_NODISCARD BOOL (*Flush)(ITSMFAudioDevice* audio);
43 /* Free the audio device */
44 void (*Free)(ITSMFAudioDevice* audio);
45};
46
47#define TSMF_AUDIO_DEVICE_EXPORT_FUNC_NAME "TSMFAudioDeviceEntry"
48typedef UINT(VCAPITYPE* TSMF_AUDIO_DEVICE_ENTRY)(ITSMFAudioDevice** dev);
49
50WINPR_ATTR_NODISCARD FREERDP_LOCAL ITSMFAudioDevice* tsmf_load_audio_device(const char* name,
51 const char* device);
52
53#endif /* FREERDP_CHANNEL_TSMF_CLIENT_AUDIO_H */