2 * Copyright 2012, 2014 Michael Stefaniuc
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
23 #include <wine/test.h>
26 #define ARRAY_SIZE(a) (sizeof(a)/sizeof((a)[0]))
28 static BOOL
missing_dmime(void)
30 IDirectMusicSegment8
*dms
;
31 HRESULT hr
= CoCreateInstance(&CLSID_DirectMusicSegment
, NULL
, CLSCTX_INPROC_SERVER
,
32 &IID_IDirectMusicSegment
, (void**)&dms
);
34 if (hr
== S_OK
&& dms
)
36 IDirectMusicSegment_Release(dms
);
42 static void test_COM_audiopath(void)
44 IDirectMusicAudioPath
*dmap
;
46 IDirectMusicPerformance8
*performance
;
50 hr
= CoCreateInstance(&CLSID_DirectMusicPerformance
, NULL
, CLSCTX_INPROC_SERVER
,
51 &IID_IDirectMusicPerformance8
, (void**)&performance
);
52 ok(hr
== S_OK
|| broken(hr
== E_NOINTERFACE
),
53 "DirectMusicPerformance create failed: %08x\n", hr
);
55 win_skip("IDirectMusicPerformance8 not available\n");
58 hr
= IDirectMusicPerformance8_InitAudio(performance
, NULL
, NULL
, NULL
,
59 DMUS_APATH_SHARED_STEREOPLUSREVERB
, 64, DMUS_AUDIOF_ALL
, NULL
);
60 if (hr
== DSERR_NODRIVER
) {
61 skip("No audio driver\n");
64 ok(hr
== S_OK
, "DirectMusicPerformance_InitAudio failed: %08x\n", hr
);
65 hr
= IDirectMusicPerformance8_GetDefaultAudioPath(performance
, &dmap
);
66 ok(hr
== S_OK
, "DirectMusicPerformance_GetDefaultAudioPath failed: %08x\n", hr
);
68 /* IDirectMusicObject and IPersistStream are not supported */
69 hr
= IDirectMusicAudioPath_QueryInterface(dmap
, &IID_IDirectMusicObject
, (void**)&unk
);
70 todo_wine
ok(FAILED(hr
) && !unk
, "Unexpected IDirectMusicObject interface: hr=%08x, iface=%p\n",
72 if (unk
) IUnknown_Release(unk
);
73 hr
= IDirectMusicAudioPath_QueryInterface(dmap
, &IID_IPersistStream
, (void**)&unk
);
74 todo_wine
ok(FAILED(hr
) && !unk
, "Unexpected IPersistStream interface: hr=%08x, iface=%p\n",
76 if (unk
) IUnknown_Release(unk
);
78 /* Same refcount for all DirectMusicAudioPath interfaces */
79 refcount
= IDirectMusicAudioPath_AddRef(dmap
);
80 ok(refcount
== 3, "refcount == %u, expected 3\n", refcount
);
82 hr
= IDirectMusicAudioPath_QueryInterface(dmap
, &IID_IUnknown
, (void**)&unk
);
83 ok(hr
== S_OK
, "QueryInterface for IID_IUnknown failed: %08x\n", hr
);
84 refcount
= IUnknown_AddRef(unk
);
85 ok(refcount
== 5, "refcount == %u, expected 5\n", refcount
);
86 refcount
= IUnknown_Release(unk
);
88 while (IDirectMusicAudioPath_Release(dmap
) > 1); /* performance has a reference too */
89 IDirectMusicPerformance8_CloseDown(performance
);
90 IDirectMusicPerformance8_Release(performance
);
93 static void test_COM_audiopathconfig(void)
95 IDirectMusicAudioPath
*dmap
= (IDirectMusicAudioPath
*)0xdeadbeef;
96 IDirectMusicObject
*dmo
;
102 /* COM aggregation */
103 hr
= CoCreateInstance(&CLSID_DirectMusicAudioPathConfig
, (IUnknown
*)&dmap
, CLSCTX_INPROC_SERVER
,
104 &IID_IUnknown
, (void**)&dmap
);
105 if (hr
== REGDB_E_CLASSNOTREG
) {
106 win_skip("DirectMusicAudioPathConfig not registered\n");
109 ok(hr
== CLASS_E_NOAGGREGATION
,
110 "DirectMusicAudioPathConfig create failed: %08x, expected CLASS_E_NOAGGREGATION\n", hr
);
111 ok(!dmap
, "dmap = %p\n", dmap
);
113 /* IDirectMusicAudioPath not supported */
114 hr
= CoCreateInstance(&CLSID_DirectMusicAudioPathConfig
, NULL
, CLSCTX_INPROC_SERVER
,
115 &IID_IDirectMusicAudioPath
, (void**)&dmap
);
116 todo_wine
ok(FAILED(hr
) && !dmap
,
117 "Unexpected IDirectMusicAudioPath interface: hr=%08x, iface=%p\n", hr
, dmap
);
119 /* IDirectMusicObject and IPersistStream supported */
120 hr
= CoCreateInstance(&CLSID_DirectMusicAudioPathConfig
, NULL
, CLSCTX_INPROC_SERVER
,
121 &IID_IPersistStream
, (void**)&ps
);
122 ok(hr
== S_OK
, "DirectMusicObject create failed: %08x, expected S_OK\n", hr
);
123 IPersistStream_Release(ps
);
124 hr
= CoCreateInstance(&CLSID_DirectMusicAudioPathConfig
, NULL
, CLSCTX_INPROC_SERVER
,
125 &IID_IDirectMusicObject
, (void**)&dmo
);
126 ok(hr
== S_OK
, "DirectMusicObject create failed: %08x, expected S_OK\n", hr
);
128 /* Same refcount for all DirectMusicObject interfaces */
129 refcount
= IDirectMusicObject_AddRef(dmo
);
130 ok(refcount
== 2, "refcount == %u, expected 2\n", refcount
);
132 hr
= IDirectMusicObject_QueryInterface(dmo
, &IID_IPersistStream
, (void**)&ps
);
133 ok(hr
== S_OK
, "QueryInterface for IID_IPersistStream failed: %08x\n", hr
);
134 refcount
= IPersistStream_AddRef(ps
);
135 ok(refcount
== 4, "refcount == %u, expected 4\n", refcount
);
136 IPersistStream_Release(ps
);
138 hr
= IDirectMusicObject_QueryInterface(dmo
, &IID_IUnknown
, (void**)&unk
);
139 ok(hr
== S_OK
, "QueryInterface for IID_IUnknown failed: %08x\n", hr
);
140 refcount
= IUnknown_AddRef(unk
);
141 ok(refcount
== 5, "refcount == %u, expected 5\n", refcount
);
142 refcount
= IUnknown_Release(unk
);
144 /* IDirectMusicAudioPath still not supported */
145 hr
= IDirectMusicObject_QueryInterface(dmo
, &IID_IDirectMusicAudioPath
, (void**)&dmap
);
146 todo_wine
ok(FAILED(hr
) && !dmap
,
147 "Unexpected IDirectMusicAudioPath interface: hr=%08x, iface=%p\n", hr
, dmap
);
149 while (IDirectMusicObject_Release(dmo
));
153 static void test_COM_graph(void)
155 IDirectMusicGraph
*dmg
= (IDirectMusicGraph
*)0xdeadbeef;
156 IDirectMusicObject
*dmo
;
162 /* COM aggregation */
163 hr
= CoCreateInstance(&CLSID_DirectMusicGraph
, (IUnknown
*)&dmg
, CLSCTX_INPROC_SERVER
,
164 &IID_IUnknown
, (void**)&dmg
);
165 ok(hr
== CLASS_E_NOAGGREGATION
,
166 "DirectMusicGraph create failed: %08x, expected CLASS_E_NOAGGREGATION\n", hr
);
167 ok(!dmg
, "dmg = %p\n", dmg
);
170 hr
= CoCreateInstance(&CLSID_DirectMusicGraph
, NULL
, CLSCTX_INPROC_SERVER
, &IID_IClassFactory
,
172 ok(hr
== E_NOINTERFACE
, "DirectMusicGraph create failed: %08x, expected E_NOINTERFACE\n", hr
);
174 /* Same refcount for all DirectMusicGraph interfaces */
175 hr
= CoCreateInstance(&CLSID_DirectMusicGraph
, NULL
, CLSCTX_INPROC_SERVER
,
176 &IID_IDirectMusicGraph
, (void**)&dmg
);
177 ok(hr
== S_OK
, "DirectMusicGraph create failed: %08x, expected S_OK\n", hr
);
178 refcount
= IDirectMusicGraph_AddRef(dmg
);
179 ok(refcount
== 2, "refcount == %u, expected 2\n", refcount
);
181 hr
= IDirectMusicGraph_QueryInterface(dmg
, &IID_IDirectMusicObject
, (void**)&dmo
);
182 if (hr
== E_NOINTERFACE
) {
183 win_skip("DirectMusicGraph without IDirectMusicObject\n");
186 ok(hr
== S_OK
, "QueryInterface for IID_IDirectMusicObject failed: %08x\n", hr
);
187 refcount
= IDirectMusicObject_AddRef(dmo
);
188 ok(refcount
== 4, "refcount == %u, expected 4\n", refcount
);
189 refcount
= IDirectMusicObject_Release(dmo
);
191 hr
= IDirectMusicGraph_QueryInterface(dmg
, &IID_IPersistStream
, (void**)&ps
);
192 ok(hr
== S_OK
, "QueryInterface for IID_IPersistStream failed: %08x\n", hr
);
193 refcount
= IPersistStream_AddRef(ps
);
194 ok(refcount
== 5, "refcount == %u, expected 5\n", refcount
);
195 refcount
= IPersistStream_Release(ps
);
197 hr
= IDirectMusicGraph_QueryInterface(dmg
, &IID_IUnknown
, (void**)&unk
);
198 ok(hr
== S_OK
, "QueryInterface for IID_IUnknown failed: %08x\n", hr
);
199 refcount
= IUnknown_AddRef(unk
);
200 ok(refcount
== 6, "refcount == %u, expected 6\n", refcount
);
201 refcount
= IUnknown_Release(unk
);
203 while (IDirectMusicGraph_Release(dmg
));
206 static void test_COM_segment(void)
208 IDirectMusicSegment8
*dms
= (IDirectMusicSegment8
*)0xdeadbeef;
209 IDirectMusicObject
*dmo
;
210 IPersistStream
*stream
;
215 /* COM aggregation */
216 hr
= CoCreateInstance(&CLSID_DirectMusicSegment
, (IUnknown
*)&dms
, CLSCTX_INPROC_SERVER
,
217 &IID_IUnknown
, (void**)&dms
);
218 ok(hr
== CLASS_E_NOAGGREGATION
,
219 "DirectMusicSegment create failed: %08x, expected CLASS_E_NOAGGREGATION\n", hr
);
220 ok(!dms
, "dms = %p\n", dms
);
223 hr
= CoCreateInstance(&CLSID_DirectMusicSegment
, NULL
, CLSCTX_INPROC_SERVER
,
224 &IID_IDirectSound
, (void**)&dms
);
225 ok(hr
== E_NOINTERFACE
,
226 "DirectMusicSegment create failed: %08x, expected E_NOINTERFACE\n", hr
);
229 hr
= CoCreateInstance(&CLSID_DirectMusicSegment
, NULL
, CLSCTX_INPROC_SERVER
,
230 &IID_IDirectMusicSegment8
, (void**)&dms
);
231 if (hr
== E_NOINTERFACE
) {
232 win_skip("DirectMusicSegment without IDirectMusicSegment8\n");
235 ok(hr
== S_OK
, "DirectMusicSegment create failed: %08x, expected S_OK\n", hr
);
236 refcount
= IDirectMusicSegment8_AddRef(dms
);
237 ok (refcount
== 2, "refcount == %u, expected 2\n", refcount
);
238 hr
= IDirectMusicSegment8_QueryInterface(dms
, &IID_IDirectMusicObject
, (void**)&dmo
);
239 ok(hr
== S_OK
, "QueryInterface for IID_IDirectMusicObject failed: %08x\n", hr
);
240 IDirectMusicSegment8_AddRef(dms
);
241 refcount
= IDirectMusicSegment8_Release(dms
);
242 ok (refcount
== 3, "refcount == %u, expected 3\n", refcount
);
243 hr
= IDirectMusicSegment8_QueryInterface(dms
, &IID_IPersistStream
, (void**)&stream
);
244 ok(hr
== S_OK
, "QueryInterface for IID_IPersistStream failed: %08x\n", hr
);
245 refcount
= IDirectMusicSegment8_Release(dms
);
246 ok (refcount
== 3, "refcount == %u, expected 3\n", refcount
);
247 hr
= IDirectMusicSegment8_QueryInterface(dms
, &IID_IUnknown
, (void**)&unk
);
248 ok(hr
== S_OK
, "QueryInterface for IID_IUnknown failed: %08x\n", hr
);
249 refcount
= IUnknown_Release(unk
);
250 ok (refcount
== 3, "refcount == %u, expected 3\n", refcount
);
251 refcount
= IDirectMusicObject_Release(dmo
);
252 ok (refcount
== 2, "refcount == %u, expected 2\n", refcount
);
253 refcount
= IPersistStream_Release(stream
);
254 ok (refcount
== 1, "refcount == %u, expected 1\n", refcount
);
255 refcount
= IDirectMusicSegment8_Release(dms
);
256 ok (refcount
== 0, "refcount == %u, expected 0\n", refcount
);
259 static void test_COM_segmentstate(void)
261 IDirectMusicSegmentState8
*dmss8
= (IDirectMusicSegmentState8
*)0xdeadbeef;
266 /* COM aggregation */
267 hr
= CoCreateInstance(&CLSID_DirectMusicSegmentState
, (IUnknown
*)&dmss8
, CLSCTX_INPROC_SERVER
,
268 &IID_IUnknown
, (void**)&dmss8
);
269 ok(hr
== CLASS_E_NOAGGREGATION
,
270 "DirectMusicSegmentState8 create failed: %08x, expected CLASS_E_NOAGGREGATION\n", hr
);
271 ok(!dmss8
, "dmss8 = %p\n", dmss8
);
274 hr
= CoCreateInstance(&CLSID_DirectMusicSegmentState
, NULL
, CLSCTX_INPROC_SERVER
,
275 &IID_IDirectMusicObject
, (void**)&dmss8
);
276 ok(hr
== E_NOINTERFACE
,
277 "DirectMusicSegmentState8 create failed: %08x, expected E_NOINTERFACE\n", hr
);
279 /* Same refcount for all DirectMusicSegmentState interfaces */
280 hr
= CoCreateInstance(&CLSID_DirectMusicSegmentState
, NULL
, CLSCTX_INPROC_SERVER
,
281 &IID_IDirectMusicSegmentState8
, (void**)&dmss8
);
282 if (hr
== E_NOINTERFACE
) {
283 win_skip("DirectMusicSegmentState without IDirectMusicSegmentState8\n");
286 ok(hr
== S_OK
, "DirectMusicSegmentState8 create failed: %08x, expected S_OK\n", hr
);
287 refcount
= IDirectMusicSegmentState8_AddRef(dmss8
);
288 ok(refcount
== 2, "refcount == %u, expected 2\n", refcount
);
290 hr
= IDirectMusicSegmentState8_QueryInterface(dmss8
, &IID_IUnknown
, (void**)&unk
);
291 ok(hr
== S_OK
, "QueryInterface for IID_IUnknown failed: %08x\n", hr
);
292 refcount
= IUnknown_AddRef(unk
);
293 ok(refcount
== 4, "refcount == %u, expected 4\n", refcount
);
294 refcount
= IUnknown_Release(unk
);
296 hr
= IDirectMusicSegmentState8_QueryInterface(dmss8
, &IID_IUnknown
, NULL
);
297 ok(hr
== E_POINTER
, "got %08x\n", hr
);
299 while (IDirectMusicSegmentState8_Release(dmss8
));
302 static void test_COM_track(void)
304 IDirectMusicTrack8
*dmt8
;
309 #define X(class) &CLSID_ ## class, #class
314 { X(DirectMusicLyricsTrack
) },
315 { X(DirectMusicMarkerTrack
) },
316 { X(DirectMusicParamControlTrack
) },
317 { X(DirectMusicSegmentTriggerTrack
) },
318 { X(DirectMusicSeqTrack
) },
319 { X(DirectMusicSysExTrack
) },
320 { X(DirectMusicTempoTrack
) },
321 { X(DirectMusicTimeSigTrack
) },
322 { X(DirectMusicWaveTrack
) }
327 for (i
= 0; i
< ARRAY_SIZE(class); i
++) {
328 /* COM aggregation */
329 dmt8
= (IDirectMusicTrack8
*)0xdeadbeef;
330 hr
= CoCreateInstance(class[i
].clsid
, (IUnknown
*)&dmt8
, CLSCTX_INPROC_SERVER
, &IID_IUnknown
,
332 if (hr
== REGDB_E_CLASSNOTREG
) {
333 win_skip("%s not registered\n", class[i
].name
);
336 ok(hr
== CLASS_E_NOAGGREGATION
,
337 "%s create failed: %08x, expected CLASS_E_NOAGGREGATION\n", class[i
].name
, hr
);
338 ok(!dmt8
, "dmt8 = %p\n", dmt8
);
341 hr
= CoCreateInstance(class[i
].clsid
, NULL
, CLSCTX_INPROC_SERVER
, &IID_IDirectMusicObject
,
343 ok(hr
== E_NOINTERFACE
, "%s create failed: %08x, expected E_NOINTERFACE\n",
346 /* Same refcount for all DirectMusicTrack interfaces */
347 hr
= CoCreateInstance(class[i
].clsid
, NULL
, CLSCTX_INPROC_SERVER
, &IID_IDirectMusicTrack8
,
349 if (hr
== E_NOINTERFACE
&& !dmt8
) {
350 skip("%s not created with CoCreateInstance()\n", class[i
].name
);
353 ok(hr
== S_OK
, "%s create failed: %08x, expected S_OK\n", class[i
].name
, hr
);
354 refcount
= IDirectMusicTrack8_AddRef(dmt8
);
355 ok(refcount
== 2, "refcount == %u, expected 2\n", refcount
);
357 hr
= IDirectMusicTrack8_QueryInterface(dmt8
, &IID_IPersistStream
, (void**)&ps
);
358 ok(hr
== S_OK
, "QueryInterface for IID_IPersistStream failed: %08x\n", hr
);
359 refcount
= IPersistStream_AddRef(ps
);
360 ok(refcount
== 4, "refcount == %u, expected 4\n", refcount
);
361 IPersistStream_Release(ps
);
363 hr
= IDirectMusicTrack8_QueryInterface(dmt8
, &IID_IUnknown
, (void**)&unk
);
364 ok(hr
== S_OK
, "QueryInterface for IID_IUnknown failed: %08x\n", hr
);
365 refcount
= IUnknown_AddRef(unk
);
366 ok(refcount
== 5, "refcount == %u, expected 5\n", refcount
);
367 refcount
= IUnknown_Release(unk
);
369 while (IDirectMusicTrack8_Release(dmt8
));
373 static void test_audiopathconfig(void)
375 IDirectMusicObject
*dmo
;
381 hr
= CoCreateInstance(&CLSID_DirectMusicAudioPathConfig
, NULL
, CLSCTX_INPROC_SERVER
,
382 &IID_IDirectMusicObject
, (void**)&dmo
);
383 if (hr
== REGDB_E_CLASSNOTREG
) {
384 win_skip("DirectMusicAudioPathConfig not registered\n");
387 ok(hr
== S_OK
, "DirectMusicAudioPathConfig create failed: %08x, expected S_OK\n", hr
);
390 hr
= IDirectMusicObject_QueryInterface(dmo
, &IID_IPersistStream
, (void**)&ps
);
391 ok(hr
== S_OK
, "QueryInterface for IID_IPersistStream failed: %08x\n", hr
);
392 hr
= IPersistStream_GetClassID(ps
, &class);
393 todo_wine
ok(hr
== S_OK
, "IPersistStream_GetClassID failed: %08x\n", hr
);
394 todo_wine
ok(IsEqualGUID(&class, &CLSID_DirectMusicAudioPathConfig
),
395 "Expected class CLSID_DirectMusicAudioPathConfig got %s\n", wine_dbgstr_guid(&class));
397 /* Unimplemented IPersistStream methods */
398 hr
= IPersistStream_IsDirty(ps
);
399 todo_wine
ok(hr
== S_FALSE
, "IPersistStream_IsDirty failed: %08x\n", hr
);
400 hr
= IPersistStream_GetSizeMax(ps
, &size
);
401 ok(hr
== E_NOTIMPL
, "IPersistStream_GetSizeMax failed: %08x\n", hr
);
402 hr
= IPersistStream_Save(ps
, NULL
, TRUE
);
403 ok(hr
== E_NOTIMPL
, "IPersistStream_Save failed: %08x\n", hr
);
405 while (IDirectMusicObject_Release(dmo
));
408 static void test_graph(void)
410 IDirectMusicGraph
*dmg
;
416 hr
= CoCreateInstance(&CLSID_DirectMusicGraph
, NULL
, CLSCTX_INPROC_SERVER
,
417 &IID_IDirectMusicGraph
, (void**)&dmg
);
418 ok(hr
== S_OK
, "DirectMusicGraph create failed: %08x, expected S_OK\n", hr
);
421 hr
= IDirectMusicGraph_QueryInterface(dmg
, &IID_IPersistStream
, (void**)&ps
);
422 ok(hr
== S_OK
, "QueryInterface for IID_IPersistStream failed: %08x\n", hr
);
423 hr
= IPersistStream_GetClassID(ps
, &class);
424 todo_wine
ok(hr
== S_OK
, "IPersistStream_GetClassID failed: %08x\n", hr
);
425 todo_wine
ok(IsEqualGUID(&class, &CLSID_DirectMusicGraph
),
426 "Expected class CLSID_DirectMusicGraph got %s\n", wine_dbgstr_guid(&class));
428 /* Unimplemented IPersistStream methods */
429 hr
= IPersistStream_IsDirty(ps
);
430 todo_wine
ok(hr
== S_FALSE
, "IPersistStream_IsDirty failed: %08x\n", hr
);
431 hr
= IPersistStream_GetSizeMax(ps
, &size
);
432 ok(hr
== E_NOTIMPL
, "IPersistStream_GetSizeMax failed: %08x\n", hr
);
433 hr
= IPersistStream_Save(ps
, NULL
, TRUE
);
434 ok(hr
== E_NOTIMPL
, "IPersistStream_Save failed: %08x\n", hr
);
436 while (IDirectMusicGraph_Release(dmg
));
439 static void test_segment(void)
441 IDirectMusicSegment
*dms
;
447 hr
= CoCreateInstance(&CLSID_DirectMusicSegment
, NULL
, CLSCTX_INPROC_SERVER
,
448 &IID_IDirectMusicSegment
, (void**)&dms
);
449 ok(hr
== S_OK
, "DirectMusicSegment create failed: %08x, expected S_OK\n", hr
);
452 hr
= IDirectMusicSegment_QueryInterface(dms
, &IID_IPersistStream
, (void**)&ps
);
453 ok(hr
== S_OK
, "QueryInterface for IID_IPersistStream failed: %08x\n", hr
);
454 hr
= IPersistStream_GetClassID(ps
, &class);
455 ok(hr
== S_OK
, "IPersistStream_GetClassID failed: %08x\n", hr
);
456 ok(IsEqualGUID(&class, &CLSID_DirectMusicSegment
),
457 "Expected class CLSID_DirectMusicSegment got %s\n", wine_dbgstr_guid(&class));
459 /* Unimplemented IPersistStream methods */
460 hr
= IPersistStream_IsDirty(ps
);
461 ok(hr
== S_FALSE
, "IPersistStream_IsDirty failed: %08x\n", hr
);
462 hr
= IPersistStream_GetSizeMax(ps
, &size
);
463 ok(hr
== E_NOTIMPL
, "IPersistStream_GetSizeMax failed: %08x\n", hr
);
464 hr
= IPersistStream_Save(ps
, NULL
, TRUE
);
465 ok(hr
== E_NOTIMPL
, "IPersistStream_Save failed: %08x\n", hr
);
467 while (IDirectMusicSegment_Release(dms
));
476 skip("dmime not available\n");
480 test_COM_audiopath();
481 test_COM_audiopathconfig();
484 test_COM_segmentstate();
486 test_audiopathconfig();