21#include <freerdp/config.h>
28#include <winpr/stream.h>
29#include <winpr/cmdline.h>
31#include <freerdp/types.h>
32#include <freerdp/settings.h>
34#include "rdpsnd_main.h"
38 rdpsndDevicePlugin device;
41static BOOL rdpsnd_fake_open(WINPR_ATTR_UNUSED rdpsndDevicePlugin* device,
43 WINPR_ATTR_UNUSED UINT32 latency)
48static void rdpsnd_fake_close(WINPR_ATTR_UNUSED rdpsndDevicePlugin* device)
52static BOOL rdpsnd_fake_set_volume(WINPR_ATTR_UNUSED rdpsndDevicePlugin* device,
53 WINPR_ATTR_UNUSED UINT32 value)
58static void rdpsnd_fake_free(rdpsndDevicePlugin* device)
60 rdpsndFakePlugin* fake = (rdpsndFakePlugin*)device;
68static BOOL rdpsnd_fake_format_supported(WINPR_ATTR_UNUSED rdpsndDevicePlugin* device,
74static UINT rdpsnd_fake_play(WINPR_ATTR_UNUSED rdpsndDevicePlugin* device,
75 WINPR_ATTR_UNUSED
const BYTE* data, WINPR_ATTR_UNUSED
size_t size)
85static UINT rdpsnd_fake_parse_addin_args(rdpsndFakePlugin* fake,
const ADDIN_ARGV* args)
92 COMMAND_LINE_SIGIL_NONE | COMMAND_LINE_SEPARATOR_COLON | COMMAND_LINE_IGN_UNKNOWN_KEYWORD;
93 status = CommandLineParseArgumentsA(args->argc, args->argv, rdpsnd_fake_args, flags, fake, NULL,
97 return ERROR_INVALID_DATA;
99 arg = rdpsnd_fake_args;
103 if (!(arg->Flags & COMMAND_LINE_VALUE_PRESENT))
106 CommandLineSwitchStart(arg) CommandLineSwitchEnd(arg)
107 }
while ((arg = CommandLineFindNextArgumentA(arg)) != NULL);
109 return CHANNEL_RC_OK;
117FREERDP_ENTRY_POINT(UINT VCAPITYPE fake_freerdp_rdpsnd_client_subsystem_entry(
121 rdpsndFakePlugin* fake = NULL;
122 UINT ret = CHANNEL_RC_OK;
123 fake = (rdpsndFakePlugin*)calloc(1,
sizeof(rdpsndFakePlugin));
126 return CHANNEL_RC_NO_MEMORY;
128 fake->device.Open = rdpsnd_fake_open;
129 fake->device.FormatSupported = rdpsnd_fake_format_supported;
130 fake->device.SetVolume = rdpsnd_fake_set_volume;
131 fake->device.Play = rdpsnd_fake_play;
132 fake->device.Close = rdpsnd_fake_close;
133 fake->device.Free = rdpsnd_fake_free;
134 args = pEntryPoints->args;
138 ret = rdpsnd_fake_parse_addin_args(fake, args);
140 if (ret != CHANNEL_RC_OK)
142 WLog_ERR(TAG,
"error parsing arguments");
147 pEntryPoints->pRegisterRdpsndDevice(pEntryPoints->rdpsnd, &fake->device);
150 rdpsnd_fake_free(&fake->device);