xref: /haiku/src/add-ons/media/media-add-ons/mixer/MixerDebug.h (revision e81a954787e50e56a7f06f72705b7859b6ab06d1)
1 /*
2  * Copyright 2002 David Shipman,
3  * Copyright 2003-2007 Marcus Overhagen
4  * Copyright 2007 Haiku Inc. All rights reserved.
5  * Distributed under the terms of the MIT License.
6  */
7 #ifndef _MIXER_DEBUG_H_
8 #define _MIXER_DEBUG_H_
9 
10 
11 #ifndef DEBUG
12 #	define DEBUG 0
13 #endif
14 
15 #include <Debug.h>
16 #include <stdio.h>
17 
18 
19 #undef TRACE
20 #undef PRINT
21 
22 
23 #if DEBUG > 0
24   inline void ERROR(const char *fmt, ...) { va_list ap; va_start(ap, fmt); printf("### ERROR: "); vprintf(fmt, ap); va_end(ap); }
25   inline void PRINT(int level, const char *fmt, ...) { va_list ap; if (level > DEBUG) return; va_start(ap, fmt); vprintf(fmt, ap); va_end(ap); }
26 
27 #	define PRINT_FORMAT(_text, _fmt)	do { char _buf[300]; string_for_format((_fmt), _buf, sizeof(_buf)); printf("%s %s\n", (_text), (_buf)); } while (0)
28 #	define PRINT_INPUT(_text, _in)		do { char _buf[300]; string_for_format((_in).format, _buf, sizeof(_buf)); printf("%s node(node %" B_PRId32 ", port %" B_PRId32 "); source(port %" B_PRId32 ", id %" B_PRId32 "); dest(port %" B_PRId32 ", id %" B_PRId32 "); fmt(%s); name(%s)\n", (_text), (_in).node.node, (_in).node.port, (_in).source.port, (_in).source.id, (_in).destination.port, (_in).destination.id, _buf, (_in).name); } while (0)
29 #	define PRINT_OUTPUT(_text, _out)	do { char _buf[300]; string_for_format((_out).format, _buf, sizeof(_buf)); printf("%s node(node %" B_PRId32 ", port %" B_PRId32 "); source(port %" B_PRId32 ", id %" B_PRId32 "); dest(port %" B_PRId32 ", id %" B_PRId32 "); fmt(%s); name(%s)\n", (_text), (_out).node.node, (_out).node.port, (_out).source.port, (_out).source.id, (_out).destination.port, (_out).destination.id, _buf, (_out).name); } while (0)
30 #	define PRINT_CHANNEL_MASK(fmt)		do { char s[200]; StringForChannelMask(s, (fmt).u.raw_audio.channel_mask); printf(" channel_mask 0x%08" B_PRIX32 " %s\n", (fmt).u.raw_audio.channel_mask, s); } while (0)
31 
32 #	if DEBUG >= 2
33 #		define TRACE 				printf
34 #	else
35 #		define TRACE(a...)			((void)0)
36 #	endif
37 #else
38 #	define PRINT_FORMAT(_text, _fmt)	((void)0)
39 #	define PRINT_INPUT(_text, _in)		((void)0)
40 #	define PRINT_OUTPUT(_text, _out)	((void)0)
41 #	define PRINT_CHANNEL_MASK(fmt)		((void)0)
42 #	define PRINT(l, a...)				((void)0)
43 #	define ERROR(a...)					((void)0)
44 #	define TRACE(a...)					((void)0)
45 #endif
46 
47 #endif /* _MIXER_DEBUG_H_ */
48