annotate src/audacious/volumecontrol.c @ 3981:ab4962c133c7

Handle native endianness.
author William Pitcock <nenolod@atheme.org>
date Thu, 22 Nov 2007 05:01:37 -0600
parents a140fadd741d
children 32bb5ea701ed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3545
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
1 /*
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
2 * Audacious
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
3 * Copyright (c) 2007 William Pitcock
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
4 *
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
5 * volumecontrol.c: High quality volume PCM padding flow.
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
6 *
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
9 * the Free Software Foundation; under version 3 of the License.
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
10 *
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
14 * GNU General Public License for more details.
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
15 *
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
17 * along with this program. If not, see <http://www.gnu.org/licenses>.
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
18 *
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
19 * The Audacious team does not consider modular code linking to
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
20 * Audacious or using our public API to be a derived work.
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
21 */
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
22
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
23 #include "output.h"
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
24 #include "iir.h"
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
25 #include "main.h"
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
26 #include "input.h"
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
27 #include "playback.h"
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
28
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
29 #include "playlist.h"
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
30 #include "configdb.h"
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
31
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
32 #include "effect.h"
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
33 #include "xconvert.h"
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
34
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
35 #include "volumecontrol.h"
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
36
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
37 #include <math.h>
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
38
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
39 typedef struct {
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
40 gint left;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
41 gint right;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
42 } volumecontrol_req_t;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
43
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
44 static volumecontrol_req_t vc_state_ = { 100, 100 };
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
45
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
46 #define STEREO_ADJUST(type, type2, endian) \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
47 do { \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
48 type *ptr = data; \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
49 for (i = 0; i < length; i += 4) \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
50 { \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
51 *ptr = type2##_TO_##endian(type2##_FROM_## endian(*ptr) * \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
52 lvol / 256); \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
53 ptr++; \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
54 *ptr = type2##_TO_##endian(type2##_FROM_##endian(*ptr) * \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
55 rvol / 256); \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
56 ptr++; \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
57 } \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
58 } while (0)
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
59
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
60 #define MONO_ADJUST(type, type2, endian) \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
61 do { \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
62 type *ptr = data; \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
63 for (i = 0; i < length; i += 2) \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
64 { \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
65 *ptr = type2##_TO_##endian(type2##_FROM_## endian(*ptr) * \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
66 vol / 256); \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
67 ptr++; \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
68 } \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
69 } while (0)
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
70
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
71 #define VOLUME_ADJUST(type, type2, endian) \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
72 do { \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
73 if (channels == 2) \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
74 STEREO_ADJUST(type, type2, endian); \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
75 else \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
76 MONO_ADJUST(type, type2, endian); \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
77 } while (0)
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
78
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
79 #define STEREO_ADJUST8(type) \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
80 do { \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
81 type *ptr = data; \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
82 for (i = 0; i < length; i += 2) \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
83 { \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
84 *ptr = *ptr * lvol / 256; \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
85 ptr++; \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
86 *ptr = *ptr * rvol / 256; \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
87 ptr++; \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
88 } \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
89 } while (0)
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
90
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
91 #define MONO_ADJUST8(type) \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
92 do { \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
93 type *ptr = data; \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
94 for (i = 0; i < length; i++) \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
95 { \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
96 *ptr = *ptr * vol / 256; \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
97 ptr++; \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
98 } \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
99 } while (0)
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
100
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
101 #define VOLUME_ADJUST8(type) \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
102 do { \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
103 if (channels == 2) \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
104 STEREO_ADJUST8(type); \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
105 else \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
106 MONO_ADJUST8(type); \
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
107 } while (0)
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
108
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
109 void volumecontrol_pad_audio(gpointer data, gint length, AFormat fmt,
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
110 gint channels)
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
111 {
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
112 gint i, vol, lvol, rvol;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
113
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
114 if (vc_state_.left == 100 && vc_state_.right == 100)
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
115 return;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
116
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
117 if (channels == 1 && (vc_state_.left == 100 || vc_state_.right == 100))
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
118 return;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
119
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
120 lvol = pow(10, (vc_state_.left - 100) / 40.0) * 256;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
121 rvol = pow(10, (vc_state_.right - 100) / 40.0) * 256;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
122 vol = MAX(lvol, rvol);
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
123
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
124 switch (fmt)
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
125 {
3981
ab4962c133c7 Handle native endianness.
William Pitcock <nenolod@atheme.org>
parents: 3553
diff changeset
126 case FMT_S16_NE:
ab4962c133c7 Handle native endianness.
William Pitcock <nenolod@atheme.org>
parents: 3553
diff changeset
127 fmt = G_BYTE_ORDER == G_LITTLE_ENDIAN ? FMT_S16_LE : FMT_S16_LE;
ab4962c133c7 Handle native endianness.
William Pitcock <nenolod@atheme.org>
parents: 3553
diff changeset
128 break;
ab4962c133c7 Handle native endianness.
William Pitcock <nenolod@atheme.org>
parents: 3553
diff changeset
129 case FMT_U16_NE:
ab4962c133c7 Handle native endianness.
William Pitcock <nenolod@atheme.org>
parents: 3553
diff changeset
130 fmt = G_BYTE_ORDER == G_LITTLE_ENDIAN ? FMT_U16_LE : FMT_U16_BE;
ab4962c133c7 Handle native endianness.
William Pitcock <nenolod@atheme.org>
parents: 3553
diff changeset
131 break;
ab4962c133c7 Handle native endianness.
William Pitcock <nenolod@atheme.org>
parents: 3553
diff changeset
132 default:
ab4962c133c7 Handle native endianness.
William Pitcock <nenolod@atheme.org>
parents: 3553
diff changeset
133 break;
ab4962c133c7 Handle native endianness.
William Pitcock <nenolod@atheme.org>
parents: 3553
diff changeset
134 }
ab4962c133c7 Handle native endianness.
William Pitcock <nenolod@atheme.org>
parents: 3553
diff changeset
135
ab4962c133c7 Handle native endianness.
William Pitcock <nenolod@atheme.org>
parents: 3553
diff changeset
136 switch (fmt)
ab4962c133c7 Handle native endianness.
William Pitcock <nenolod@atheme.org>
parents: 3553
diff changeset
137 {
3545
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
138 case FMT_S16_LE:
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
139 VOLUME_ADJUST(gint16, GINT16, LE);
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
140 break;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
141 case FMT_U16_LE:
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
142 VOLUME_ADJUST(guint16, GUINT16, LE);
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
143 break;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
144 case FMT_S16_BE:
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
145 VOLUME_ADJUST(gint16, GINT16, LE);
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
146 break;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
147 case FMT_U16_BE:
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
148 VOLUME_ADJUST(guint16, GUINT16, LE);
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
149 break;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
150 case FMT_S8:
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
151 VOLUME_ADJUST8(gint8);
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
152 break;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
153 case FMT_U8:
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
154 VOLUME_ADJUST8(guint8);
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
155 break;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
156 default:
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
157 g_warning("unhandled format %d.", fmt);
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
158 break;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
159 }
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
160 }
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
161
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
162 void
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
163 volumecontrol_get_volume_state(gint *l, gint *r)
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
164 {
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
165 *l = vc_state_.left;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
166 *r = vc_state_.right;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
167 }
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
168
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
169 void
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
170 volumecontrol_set_volume_state(gint l, gint r)
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
171 {
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
172 vc_state_.left = l;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
173 vc_state_.right = r;
7a2b667bab4b Add volumecontrol flow implementation.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
174 }
3553
a140fadd741d software volumecontrol->flow manager API
William Pitcock <nenolod@atheme.org>
parents: 3545
diff changeset
175
a140fadd741d software volumecontrol->flow manager API
William Pitcock <nenolod@atheme.org>
parents: 3545
diff changeset
176 void
a140fadd741d software volumecontrol->flow manager API
William Pitcock <nenolod@atheme.org>
parents: 3545
diff changeset
177 volumecontrol_flow(FlowContext *context)
a140fadd741d software volumecontrol->flow manager API
William Pitcock <nenolod@atheme.org>
parents: 3545
diff changeset
178 {
a140fadd741d software volumecontrol->flow manager API
William Pitcock <nenolod@atheme.org>
parents: 3545
diff changeset
179 if (!cfg.software_volume_control)
a140fadd741d software volumecontrol->flow manager API
William Pitcock <nenolod@atheme.org>
parents: 3545
diff changeset
180 return;
a140fadd741d software volumecontrol->flow manager API
William Pitcock <nenolod@atheme.org>
parents: 3545
diff changeset
181
a140fadd741d software volumecontrol->flow manager API
William Pitcock <nenolod@atheme.org>
parents: 3545
diff changeset
182 volumecontrol_pad_audio(context->data, context->len, context->fmt, context->channels);
a140fadd741d software volumecontrol->flow manager API
William Pitcock <nenolod@atheme.org>
parents: 3545
diff changeset
183 }