20 #include "audiocapturemgr_iarm.h"
24 #include "safec_lib.h"
26 using namespace audiocapturemgr;
27 static const char * instance_name = NULL;
30 std::cout<<
"\n--- audio capture test application menu ---\n";
31 std::cout<<
"1. open music-id session\n";
32 std::cout<<
"2. print session details\n";
33 std::cout<<
"3. get default props\n";
34 std::cout<<
"4. set audio props\n";
35 std::cout<<
"5. get output props\n";
36 std::cout<<
"6. start\n";
37 std::cout<<
"7. stop\n";
38 std::cout<<
"8. close music session.\n";
39 std::cout<<
"9. set output props.\n";
40 std::cout<<
"10. get audio props.\n";
41 std::cout<<
"11. get precaptured sample.\n";
42 std::cout<<
"12. get post-captured sample.\n";
43 std::cout<<
"13. quit.\n";
48 if(IARM_RESULT_SUCCESS != ret)
50 std::cout<<
"Bus call failed.\n";
55 std::cout<<
"ACM implementation of bus call failed.\n";
61 void iarmEventHandler(
const char *owner, IARM_EventId_t eventId,
void *data,
size_t len)
63 std::cout<<
"Received IARM event.\n";
65 std::string filename = param->dataLocator;
66 std::cout<<
"Sample "<<filename<<
" is ready.\n";
71 bool keep_running =
true;
72 session_id_t session = -1;
74 std::string socket_path;
83 std::cout<<
"Enter command:\n";
84 if(!(std::cin >> choice))
88 std::cin.ignore(10000,
'\n');
94 param.details.arg_open.source = 0;
95 param.details.arg_open.output_type = BUFFERED_FILE_OUTPUT;
96 ret =
IARM_Bus_Call(IARMBUS_AUDIOCAPTUREMGR_NAME, IARMBUS_AUDIOCAPTUREMGR_OPEN, (
void *) ¶m,
sizeof(param));
97 if(!verify_result(ret, param))
101 session = param.session_id;
102 std::cout<<
"Opened new session "<<session<<std::endl;
106 std::cout<<
"Session ID is "<<session<<std::endl;
110 param.session_id = session;
111 ret =
IARM_Bus_Call(IARMBUS_AUDIOCAPTUREMGR_NAME, IARMBUS_AUDIOCAPTUREMGR_GET_DEFAULT_AUDIO_PROPS, (
void *) ¶m,
sizeof(param));
112 if(!verify_result(ret, param))
116 INFO(
"Format: 0x%x, delay comp: %dms, fifo size: %d, threshold: %d\n",
117 param.details.arg_audio_properties.format,
118 param.details.arg_audio_properties.delay_compensation_ms,
119 param.details.arg_audio_properties.fifo_size,
120 param.details.arg_audio_properties.threshold);
121 props = param.details.arg_audio_properties;
125 param.session_id = session;
126 ret =
IARM_Bus_Call(IARMBUS_AUDIOCAPTUREMGR_NAME, IARMBUS_AUDIOCAPTUREMGR_GET_AUDIO_PROPS, (
void *) ¶m,
sizeof(param));
127 if(!verify_result(ret, param))
131 INFO(
"Format: 0x%x, delay comp: %dms, fifo size: %d, threshold: %d\n",
132 param.details.arg_audio_properties.format,
133 param.details.arg_audio_properties.delay_compensation_ms,
134 param.details.arg_audio_properties.fifo_size,
135 param.details.arg_audio_properties.threshold);
136 props = param.details.arg_audio_properties;
140 param.session_id = session;
141 param.details.arg_audio_properties = props;
142 param.details.arg_audio_properties.delay_compensation_ms = 190;
143 ret =
IARM_Bus_Call(IARMBUS_AUDIOCAPTUREMGR_NAME, IARMBUS_AUDIOCAPTUREMGR_SET_AUDIO_PROPERTIES, (
void *) ¶m,
sizeof(param));
144 if(!verify_result(ret, param))
151 param.session_id = session;
152 ret =
IARM_Bus_Call(IARMBUS_AUDIOCAPTUREMGR_NAME, IARMBUS_AUDIOCAPTUREMGR_GET_OUTPUT_PROPS, (
void *) ¶m,
sizeof(param));
153 if(!verify_result(ret, param))
157 std::cout<<
"Max supported duration is "<<param.details.arg_output_props.output.max_buffer_duration<<std::endl;
161 param.session_id = session;
162 ret =
IARM_Bus_Call(IARMBUS_AUDIOCAPTUREMGR_NAME, IARMBUS_AUDIOCAPTUREMGR_START, (
void *) ¶m,
sizeof(param));
163 if(!verify_result(ret, param))
167 std::cout<<
"Start procedure complete.\n";
171 param.session_id = session;
172 ret =
IARM_Bus_Call(IARMBUS_AUDIOCAPTUREMGR_NAME, IARMBUS_AUDIOCAPTUREMGR_STOP, (
void *) ¶m,
sizeof(param));
173 if(!verify_result(ret, param))
177 std::cout<<
"Stop procedure complete.\n";
181 param.session_id = session;
182 ret =
IARM_Bus_Call(IARMBUS_AUDIOCAPTUREMGR_NAME, IARMBUS_AUDIOCAPTUREMGR_CLOSE, (
void *) ¶m,
sizeof(param));
183 if(!verify_result(ret, param))
187 std::cout<<
"Close procedure complete.\n";
191 param.session_id = session;
192 param.details.arg_output_props.output.buffer_duration = 10;
193 ret =
IARM_Bus_Call(IARMBUS_AUDIOCAPTUREMGR_NAME, IARMBUS_AUDIOCAPTUREMGR_SET_OUTPUT_PROPERTIES, (
void *) ¶m,
sizeof(param));
194 if(!verify_result(ret, param))
201 param.session_id = session;
202 param.details.arg_sample_request.duration = 5;
203 param.details.arg_sample_request.is_precapture =
true;
204 ret =
IARM_Bus_Call(IARMBUS_AUDIOCAPTUREMGR_NAME, IARMBUS_AUDIOCAPTUREMGR_REQUEST_SAMPLE, (
void *) ¶m,
sizeof(param));
205 if(!verify_result(ret, param))
209 std::cout<<
"Requested precaptured sample.\n";
213 param.session_id = session;
214 param.details.arg_sample_request.duration = 10;
215 param.details.arg_sample_request.is_precapture =
false;
216 ret =
IARM_Bus_Call(IARMBUS_AUDIOCAPTUREMGR_NAME, IARMBUS_AUDIOCAPTUREMGR_REQUEST_SAMPLE, (
void *) ¶m,
sizeof(param));
217 if(!verify_result(ret, param))
221 std::cout<<
"Requested post-captured sample.\n";
225 std::cout<<
"Exiting.\n";
226 keep_running =
false;
230 std::cout<<
"Unknown input!\n";
236 #define ACM_TESTAPP_NAME_PRFIX "acm_testapp_"
237 int main(
int argc,
char *argv[])
241 std::cout<<
"Each exec session needs a name. Invoke it as $<exec name> <session-name>"<<std::endl;
242 std::cout<<
"For instance, $acm_ipout_testapp alpha\n";
246 instance_name = argv[1];
247 char bus_registration_name[100];
248 rc = sprintf_s(bus_registration_name,
sizeof(bus_registration_name),
"%s%s", ACM_TESTAPP_NAME_PRFIX, argv[1]);
257 std::cout<<
"Unable to init IARMBus. Try another session name.\n";
262 std::cout<<
"Unable to connect to IARBus\n";