root/trunk/libffado/config.h.in

Revision 1099, 8.9 kB (checked in by ppalmers, 13 years ago)

- transmit AMDTP packets earlier (3 to 4 packets instead of 6)

adheres to the spec.

- extra's in debug code
- switched off all extended debugging features by default

Line 
1 /* config.h.in. */
2 #ifndef CONFIG_H
3 #define CONFIG_H
4
5 /* Name of package */
6 #define PACKAGE $PACKAGE
7
8 /* Define to the address where bug reports for this package should be sent. */
9 #define PACKAGE_BUGREPORT "<ffado-devel@lists.sf.net>"
10
11 /* Define to the full name of this package. */
12 #define PACKAGE_NAME "$PACKAGE"
13
14 /* Define to the full name and version of this package. */
15 #define PACKAGE_STRING "$PACKAGE $VERSION-$REVISION"
16
17 /* Define to the one symbol short name of this package. */
18 #define PACKAGE_TARNAME "$PACKAGE"
19
20 /* Define to the version of this package. */
21 #define PACKAGE_VERSION "$VERSION-$REVISION"
22
23 /* Define to the version of the cace. */
24 #define CACHE_VERSION "$VERSION-$REVISION"
25 #define CACHEDIR "$CACHEDIR"
26
27 /* Define to the api version */
28 #define FFADO_API_VERSION $FFADO_API_VERSION
29
30 #define BINDIR "$BINDIR"
31 #define LIBDIR "$LIBDIR"
32 #define SHAREDIR "$SHAREDIR"
33
34 /* Define indicating availability of lrint() */
35 #define HAVE_LRINT $HAVE_LRINT
36
37 /* Define indicatin availability of lrintf() */
38 #define HAVE_LRINTF $HAVE_LRINTF
39
40 // use a RT-safe message buffer for debug output
41 // useful to disable this when the code aborts/segfaults to
42 // not lose debug output. should be enabled though.
43 #define DEBUG_USE_MESSAGE_BUFFER             1
44 // max message length in the debug messagebuffer
45 #define DEBUG_MAX_MESSAGE_LENGTH           512
46 // number of messages in the debug messagebuffer (power of two)
47 #define DEBUG_MB_BUFFERS                  1024
48
49 // use an RT thread for reading out the messagebuffer.
50 // can reduce the number of buffer xruns, but not
51 // recommended
52 #define DEBUG_MESSAGE_BUFFER_REALTIME        0
53 #define DEBUG_MESSAGE_BUFFER_REALTIME_PRIO   1
54
55 // When a write can't get the buffer lock, how many times
56 // should it retry, and wait how long between retries?
57 #define DEBUG_MESSAGE_BUFFER_COLLISION_WAIT_NTRIES      2
58 #define DEBUG_MESSAGE_BUFFER_COLLISION_WAIT_NSEC    50000
59
60
61 // support a debug backlog
62 // note that this does not influence non-debug builds
63 #define DEBUG_BACKLOG_SUPPORT                0
64 // number of messages in the backlog buffer (power of two)
65 #define DEBUG_BACKLOG_MB_BUFFERS            64
66
67 // support backtrace debugging
68 // note that this does not influence non-debug builds
69 #define DEBUG_BACKTRACE_SUPPORT              0
70 // max length of backtrace
71 #define DEBUG_MAX_BACKTRACE_LENGTH           8
72 // max amount of function pointers to keep track of
73 #define DEBUG_MAX_BACKTRACE_FUNCTIONS_SEEN  64
74
75 // lock debugging
76 #define DEBUG_LOCK_COLLISION_TRACING         0
77
78 // make this zero to disable the most extreme
79 // debug logging in the critical sections
80 #define DEBUG_EXTREME_ENABLE                 0
81
82 // watchdog
83 #define WATCHDOG_DEFAULT_CHECK_INTERVAL_USECS   (1000*1000*4)
84 #define WATCHDOG_DEFAULT_RUN_REALTIME           1
85 #define WATCHDOG_DEFAULT_PRIORITY               98
86
87 // threading
88 #define THREAD_MAX_RTPRIO                   98
89 #define THREAD_MIN_RTPRIO                   1
90
91 // time
92
93 // we should be using absolute clock_nanosleep
94 // but on my system it causes a problem on shutdown.
95 #define USE_ABSOLUTE_NANOSLEEP              1
96
97 // 1394 service constants
98 #define IEEE1394SERVICE_USE_CYCLETIMER_DLL                         1
99 #define IEEE1394SERVICE_CYCLETIMER_DLL_UPDATE_INTERVAL_USEC   200000
100 #define IEEE1394SERVICE_MAX_FIREWIRE_PORTS                         4
101
102 #define IEEE1394SERVICE_CYCLETIMER_HELPER_RUN_REALTIME       1
103 #define IEEE1394SERVICE_CYCLETIMER_HELPER_PRIO_INCREASE    -10
104
105 // The current version of libiec61883 doesn't seem to calculate
106 // the bandwidth correctly. Defining this to non-zero skips
107 // bandwidth allocation when doing CMP connections.
108 #define IEEE1394SERVICE_SKIP_IEC61883_BANDWIDTH_ALLOCATION   1
109
110 #define MINIMUM_INTERRUPTS_PER_PERIOD                       2U
111
112 // These are the result of a lot of trial and error
113 // due to weirdness in the kernel layer
114 #define MAX_XMIT_PACKET_SIZE                         (2048-16)
115 #define MAX_XMIT_NB_BUFFERS                                200
116
117 #define ISOHANDLER_FLUSH_BEFORE_ITERATE                      0
118
119 #define ISOHANDLER_DEATH_DETECT_TIMEOUT_USECS        1000000LL
120
121 #define ISOHANDLER_CHECK_CTR_RECONSTRUCTION                  0
122
123 #define ISOHANDLERMANAGER_MAX_ISO_HANDLERS_PER_PORT         16
124 #define ISOHANDLERMANAGER_MAX_STREAMS_PER_ISOTHREAD         16
125
126 // The best setup is if the receive handlers have lower priority
127 // than the client thread since that ensures that as soon as we
128 // received sufficient frames, the client thread runs.
129 // The transmit thread should have higher priority to ensure that
130 // all available data is flushed to the ISO kernel buffers as
131 // soon as possible
132 // At this moment, the jack backend uses base+5 to init ffado
133 // prio
134 #define ISOHANDLERMANAGER_ISO_PRIO_INCREASE                  0
135 #define ISOHANDLERMANAGER_ISO_PRIO_INCREASE_RECV            -6
136 #define ISOHANDLERMANAGER_ISO_PRIO_INCREASE_XMIT             1
137
138 // the timeout for ISO activity on any thread
139 // NOTE: don't make this 0
140 #define ISOHANDLERMANAGER_ISO_TASK_WAIT_TIMEOUT_USECS        1000000LL
141
142 // allows to add some processing margin. This shifts the time
143 // at which the buffer is transfer()'ed, making things somewhat
144 // more robust. It should be noted though that shifting the transfer
145 // time to a later time instant also causes the xmit buffer fill to be
146 // lower on average.
147 #define STREAMPROCESSORMANAGER_SIGNAL_DELAY_TICKS           (3072*6)
148
149 // startup control
150 #define STREAMPROCESSORMANAGER_CYCLES_FOR_DRYRUN            40000
151 #define STREAMPROCESSORMANAGER_CYCLES_FOR_STARTUP           200
152 #define STREAMPROCESSORMANAGER_PRESTART_CYCLES_FOR_XMIT     20
153 #define STREAMPROCESSORMANAGER_PRESTART_CYCLES_FOR_RECV     0
154 #define STREAMPROCESSORMANAGER_SYNCSTART_TRIES              10
155 #define STREAMPROCESSORMANAGER_SYNC_WAIT_TIME_MSEC          200
156 #define STREAMPROCESSORMANAGER_ALIGN_AVERAGE_TIME_MSEC      400
157 #define STREAMPROCESSORMANAGER_NB_ALIGN_TRIES               40
158
159 #define STREAMPROCESSORMANAGER_DYNAMIC_SYNC_DELAY           0
160
161 // FIXME: note that it will probably be better to use a DLL bandwidth that is
162 //        dependant on the sample rate
163 #define TIMESTAMPEDBUFFER_DLL_BANDWIDTH                     (0.01)
164
165 // -- AMDTP options -- //
166
167 // in ticks
168 // as per AMDTP2.1:
169 // 354.17us + 125us @ 24.576ticks/usec = 11776.08192 ticks
170 #define AMDTP_TRANSMIT_TRANSFER_DELAY   (11776U)
171
172 // the absolute minimum number of cycles we want to transmit
173 // a packet ahead of the presentation time. The nominal time
174 // the packet is transmitted ahead of the presentation time is
175 // given by AMDTP_TRANSMIT_TRANSFER_DELAY (in ticks), but in case we
176 // are too late for that, this constant defines how late we can
177 // be.
178 #define AMDTP_MIN_CYCLES_BEFORE_PRESENTATION                1
179
180 // the absolute maximum number of cycles we want to transmit
181 // a packet ahead of the ideal transmit time. The nominal time
182 // the packet is transmitted ahead of the presentation time is
183 // given by AMDTP_TRANSMIT_TRANSFER_DELAY (in ticks), but we can send
184 // packets early if we want to. (not completely according to spec)
185 // (for spec compliance you need to specify a value of 0)
186 #define AMDTP_MAX_CYCLES_TO_TRANSMIT_EARLY                  0
187
188 // ensure that the AMDTP SP clips all float values to [-1.0..1.0]
189 #define AMDTP_CLIP_FLOATS                                   1
190
191 // Allow that devices request that the AMDTP transmit SP adds
192 // payload to the NO-DATA packets.
193 #define AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT                  1
194
195 // Default setting for the payload setting if
196 // AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT is enabled. Devices can
197 // explicity override this
198 #define AMDTP_SEND_PAYLOAD_IN_NODATA_XMIT_BY_DEFAULT     true
199
200 // -- MOTU options -- //
201
202 // the transfer delay is substracted from the ideal presentation
203 // time to obtain a corrected presentation time. This values is
204 // then used to stamp the packet and determine the transmission
205 // time instant.
206 #define MOTU_TRANSMIT_TRANSFER_DELAY    (0U)
207
208 // the absolute minimum number of cycles we want to transmit
209 // a packet ahead of the presentation time. The nominal time
210 // the packet is transmitted ahead of the presentation time is
211 // given by MOTU_TRANSMIT_TRANSFER_DELAY (in ticks), but in case we
212 // are too late for that, this constant defines how late we can
213 // be.
214 #define MOTU_MIN_CYCLES_BEFORE_PRESENTATION                0
215
216 // the absolute maximum number of cycles we want to transmit
217 // a packet ahead of the ideal transmit time. The nominal time
218 // the packet is transmitted ahead of the presentation time is
219 // given by MOTU_TRANSMIT_TRANSFER_DELAY (in ticks), but we can send
220 // packets early if we want to.
221 #define MOTU_MAX_CYCLES_TO_TRANSMIT_EARLY                  2
222
223 // ensure that the MOTU tx SP clips all float values to [-1.0..1.0]
224 #define MOTU_CLIP_FLOATS                                   1
225
226 /// The unavoidable device specific hacks
227
228 // Use the information in the music plug instead of that in the
229 // cluster info block for the stream configuration. Should not
230 // be necessary
231 #define AVC_STREAMCONFIG_USE_MUSICPLUG                     0
232
233 #endif // CONFIG_H
Note: See TracBrowser for help on using the browser.