FreeRDP
sf_audin.c
1 
23 #include <freerdp/config.h>
24 
25 #include <winpr/assert.h>
26 
27 #include "sfreerdp.h"
28 
29 #include "sf_audin.h"
30 
31 #include <freerdp/server/server-common.h>
32 #include <freerdp/log.h>
33 #define TAG SERVER_TAG("sample")
34 
35 #if defined(CHANNEL_AUDIN_SERVER)
36 
37 static UINT sf_peer_audin_data(audin_server_context* audin, const SNDIN_DATA* data)
38 {
39  /* TODO: Implement */
40  WINPR_ASSERT(audin);
41  WINPR_ASSERT(data);
42 
43  WLog_WARN(TAG, "not implemented");
44  WLog_DBG(TAG, "receive %" PRIdz " bytes.", Stream_Length(data->Data));
45  return CHANNEL_RC_OK;
46 }
47 
48 #endif
49 
50 BOOL sf_peer_audin_init(testPeerContext* context)
51 {
52  WINPR_ASSERT(context);
53 #if defined(CHANNEL_AUDIN_SERVER)
54  context->audin = audin_server_context_new(context->vcm);
55  WINPR_ASSERT(context->audin);
56 
57  context->audin->rdpcontext = &context->_p;
58  context->audin->userdata = context;
59 
60  context->audin->Data = sf_peer_audin_data;
61 
62  return audin_server_set_formats(context->audin, -1, NULL);
63 #else
64  return TRUE;
65 #endif
66 }
67 
68 BOOL sf_peer_audin_start(testPeerContext* context)
69 {
70 #if defined(CHANNEL_AUDIN_SERVER)
71  if (!context || !context->audin || !context->audin->Open)
72  return FALSE;
73 
74  return context->audin->Open(context->audin);
75 #else
76  return FALSE;
77 #endif
78 }
79 
80 BOOL sf_peer_audin_stop(testPeerContext* context)
81 {
82 #if defined(CHANNEL_AUDIN_SERVER)
83  if (!context || !context->audin || !context->audin->Close)
84  return FALSE;
85 
86  return context->audin->Close(context->audin);
87 #else
88  return FALSE;
89 #endif
90 }
91 
92 BOOL sf_peer_audin_running(testPeerContext* context)
93 {
94 #if defined(CHANNEL_AUDIN_SERVER)
95  if (!context || !context->audin || !context->audin->IsOpen)
96  return FALSE;
97 
98  return context->audin->IsOpen(context->audin);
99 #else
100  return FALSE;
101 #endif
102 }
103 
104 void sf_peer_audin_uninit(testPeerContext* context)
105 {
106  WINPR_ASSERT(context);
107 
108 #if defined(CHANNEL_AUDIN_SERVER)
109  audin_server_context_free(context->audin);
110  context->audin = NULL;
111 #endif
112 }