1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
diff -urN alsa-lib-1.0.18-0rig//src/pcm/pcm_local.h alsa-lib-1.0.18/src/pcm/pcm_local.h
--- alsa-lib-1.0.18-0rig//src/pcm/pcm_local.h 2009-01-31 11:02:12.000000000 +0100
+++ alsa-lib-1.0.18/src/pcm/pcm_local.h 2009-01-31 11:03:24.000000000 +0100
@@ -611,6 +611,13 @@
snd_pcm_hw_param_t var);
int _snd_pcm_hw_param_set(snd_pcm_hw_params_t *params,
snd_pcm_hw_param_t var, unsigned int val, int dir);
+
+#if defined(AVR32_INLINE_BUG)
+int _snd_pcm_hw_params_set_format(snd_pcm_hw_params_t *params,
+ snd_pcm_format_t val);
+int _snd_pcm_hw_params_set_subformat(snd_pcm_hw_params_t *params,
+ snd_pcm_subformat_t val);
+#else
static inline int _snd_pcm_hw_params_set_format(snd_pcm_hw_params_t *params,
snd_pcm_format_t val)
{
@@ -624,7 +631,7 @@
return _snd_pcm_hw_param_set(params, SND_PCM_HW_PARAM_SUBFORMAT,
(unsigned long) val, 0);
}
-
+#endif
int _snd_pcm_hw_param_set_min(snd_pcm_hw_params_t *params,
snd_pcm_hw_param_t var, unsigned int val, int dir);
int _snd_pcm_hw_param_set_max(snd_pcm_hw_params_t *params,
diff -urN alsa-lib-1.0.18-0rig//src/pcm/pcm_route.c alsa-lib-1.0.18/src/pcm/pcm_route.c
--- alsa-lib-1.0.18-0rig//src/pcm/pcm_route.c 2009-01-31 11:02:12.000000000 +0100
+++ alsa-lib-1.0.18/src/pcm/pcm_route.c 2009-01-31 11:03:18.000000000 +0100
@@ -26,6 +26,7 @@
*
*/
+
#include <byteswap.h>
#include <math.h>
#include "pcm_local.h"
@@ -106,6 +107,23 @@
#endif /* DOC_HIDDEN */
+
+#if defined(AVR32_INLINE_BUG)
+int _snd_pcm_hw_params_set_format(snd_pcm_hw_params_t *params,
+ snd_pcm_format_t val)
+{
+ return _snd_pcm_hw_param_set(params, SND_PCM_HW_PARAM_FORMAT,
+ (unsigned long) val, 0);
+}
+
+int _snd_pcm_hw_params_set_subformat(snd_pcm_hw_params_t *params,
+ snd_pcm_subformat_t val)
+{
+ return _snd_pcm_hw_param_set(params, SND_PCM_HW_PARAM_SUBFORMAT,
+ (unsigned long) val, 0);
+}
+#endif
+
static void snd_pcm_route_convert1_zero(const snd_pcm_channel_area_t *dst_area,
snd_pcm_uframes_t dst_offset,
const snd_pcm_channel_area_t *src_areas ATTRIBUTE_UNUSED,
@@ -483,6 +501,8 @@
snd_pcm_uframes_t frames,
snd_pcm_route_params_t *params)
{
+#if defined(AVR32_INLINE_BUG)
+#endif
unsigned int dst_channel;
snd_pcm_route_ttable_dst_t *dstp;
const snd_pcm_channel_area_t *dst_area;
@@ -551,8 +571,20 @@
_snd_pcm_hw_param_set_mask(sparams, SND_PCM_HW_PARAM_ACCESS,
&saccess_mask);
if (route->sformat != SND_PCM_FORMAT_UNKNOWN) {
+#if defined(AVR32_INLINE_BUG)
+/* Start of of problem */
+#endif
_snd_pcm_hw_params_set_format(sparams, route->sformat);
_snd_pcm_hw_params_set_subformat(sparams, SND_PCM_SUBFORMAT_STD);
+#if 0
+ _snd_pcm_hw_param_set(sparams, SND_PCM_HW_PARAM_FORMAT,
+ (unsigned long) route->sformat, 0);
+ _snd_pcm_hw_param_set(sparams, SND_PCM_HW_PARAM_SUBFORMAT,
+ (unsigned long) SND_PCM_SUBFORMAT_STD, 0);
+#endif
+#if defined(AVR32_INLINE_BUG)
+/* End of problem */
+#endif
}
if (route->schannels >= 0) {
_snd_pcm_hw_param_set(sparams, SND_PCM_HW_PARAM_CHANNELS,
|