|
Lines 1-4
Link Here
|
| 1 |
--- drivers/oss/oss_driver.c.orig 2016-02-23 15:13:53 UTC |
1 |
--- drivers/oss/oss_driver.c.orig 2017-01-10 10:20:51 UTC |
| 2 |
+++ drivers/oss/oss_driver.c |
2 |
+++ drivers/oss/oss_driver.c |
| 3 |
@@ -23,6 +23,7 @@ |
3 |
@@ -23,6 +23,7 @@ |
| 4 |
|
4 |
|
|
Lines 8-14
Link Here
|
| 8 |
#ifdef USE_BARRIER |
8 |
#ifdef USE_BARRIER |
| 9 |
/* |
9 |
/* |
| 10 |
* POSIX conformance level should be globally defined somewhere, possibly |
10 |
* POSIX conformance level should be globally defined somewhere, possibly |
| 11 |
@@ -172,7 +173,9 @@ static void set_period_size (oss_driver_ |
11 |
@@ -77,6 +78,10 @@ |
|
|
12 |
#endif /* _SIOWR */ |
| 13 |
#endif /* SNDCTL_DSP_COOKEDMODE */ |
| 14 |
|
| 15 |
+#if !defined(OPTION_COOKEDMODE) |
| 16 |
+#define OPTION_COOKEDMODE 0 |
| 17 |
+#endif |
| 18 |
+ |
| 19 |
#define OSS_DRIVER_N_PARAMS 11 |
| 20 |
const static jack_driver_param_desc_t oss_params[OSS_DRIVER_N_PARAMS] = { |
| 21 |
{ "rate", |
| 22 |
@@ -172,7 +177,9 @@ static void set_period_size (oss_driver_ |
| 12 |
((double)driver->period_size / |
23 |
((double)driver->period_size / |
| 13 |
(double)driver->sample_rate) * 1e6; |
24 |
(double)driver->sample_rate) * 1e6; |
| 14 |
driver->last_wait_ust = 0; |
25 |
driver->last_wait_ust = 0; |
|
Lines 19-25
Link Here
|
| 19 |
driver->next_periodtime = 0; |
30 |
driver->next_periodtime = 0; |
| 20 |
driver->iodelay = 0.0F; |
31 |
driver->iodelay = 0.0F; |
| 21 |
} |
32 |
} |
| 22 |
@@ -180,7 +183,9 @@ static void set_period_size (oss_driver_ |
33 |
@@ -180,7 +187,9 @@ static void set_period_size (oss_driver_ |
| 23 |
|
34 |
|
| 24 |
static inline void update_times (oss_driver_t *driver) |
35 |
static inline void update_times (oss_driver_t *driver) |
| 25 |
{ |
36 |
{ |
|
Lines 30-36
Link Here
|
| 30 |
if (driver->next_periodtime > 0) { |
41 |
if (driver->next_periodtime > 0) { |
| 31 |
driver->iodelay = (float) |
42 |
driver->iodelay = (float) |
| 32 |
((long double)driver->last_periodtime - |
43 |
((long double)driver->last_periodtime - |
| 33 |
@@ -211,6 +216,7 @@ static void copy_and_convert_in (jack_sa |
44 |
@@ -211,6 +220,7 @@ static void copy_and_convert_in (jack_sa |
| 34 |
int dstidx; |
45 |
int dstidx; |
| 35 |
signed short *s16src = (signed short*)src; |
46 |
signed short *s16src = (signed short*)src; |
| 36 |
signed int *s32src = (signed int*)src; |
47 |
signed int *s32src = (signed int*)src; |
|
Lines 38-44
Link Here
|
| 38 |
double *f64src = (double*)src; |
49 |
double *f64src = (double*)src; |
| 39 |
jack_sample_t scale; |
50 |
jack_sample_t scale; |
| 40 |
|
51 |
|
| 41 |
@@ -225,10 +231,13 @@ static void copy_and_convert_in (jack_sa |
52 |
@@ -225,10 +235,13 @@ static void copy_and_convert_in (jack_sa |
| 42 |
} |
53 |
} |
| 43 |
break; |
54 |
break; |
| 44 |
case 24: |
55 |
case 24: |
|
Lines 54-60
Link Here
|
| 54 |
srcidx += chcount; |
65 |
srcidx += chcount; |
| 55 |
} |
66 |
} |
| 56 |
break; |
67 |
break; |
| 57 |
@@ -256,6 +265,7 @@ static void copy_and_convert_out (void * |
68 |
@@ -256,6 +269,7 @@ static void copy_and_convert_out (void * |
| 58 |
int srcidx; |
69 |
int srcidx; |
| 59 |
int dstidx; |
70 |
int dstidx; |
| 60 |
signed short *s16dst = (signed short*)dst; |
71 |
signed short *s16dst = (signed short*)dst; |
|
Lines 62-68
Link Here
|
| 62 |
signed int *s32dst = (signed int*)dst; |
73 |
signed int *s32dst = (signed int*)dst; |
| 63 |
double *f64dst = (double*)dst; |
74 |
double *f64dst = (double*)dst; |
| 64 |
jack_sample_t scale; |
75 |
jack_sample_t scale; |
| 65 |
@@ -273,12 +283,15 @@ static void copy_and_convert_out (void * |
76 |
@@ -273,12 +287,15 @@ static void copy_and_convert_out (void * |
| 66 |
} |
77 |
} |
| 67 |
break; |
78 |
break; |
| 68 |
case 24: |
79 |
case 24: |
|
Lines 83-89
Link Here
|
| 83 |
dstidx += chcount; |
94 |
dstidx += chcount; |
| 84 |
} |
95 |
} |
| 85 |
break; |
96 |
break; |
| 86 |
@@ -441,19 +454,7 @@ static int oss_driver_start (oss_driver_ |
97 |
@@ -429,7 +446,7 @@ static int oss_driver_detach (oss_driver |
|
|
98 |
|
| 99 |
static int oss_driver_start (oss_driver_t *driver) |
| 100 |
{ |
| 101 |
- int flags = 0; |
| 102 |
+ int cookedmode = OPTION_COOKEDMODE; |
| 103 |
int format; |
| 104 |
int channels; |
| 105 |
int samplerate; |
| 106 |
@@ -441,19 +458,7 @@ static int oss_driver_start (oss_driver_ |
| 87 |
const char *indev = driver->indev; |
107 |
const char *indev = driver->indev; |
| 88 |
const char *outdev = driver->outdev; |
108 |
const char *outdev = driver->outdev; |
| 89 |
|
109 |
|
|
Lines 104-110
Link Here
|
| 104 |
driver->trigger = 0; |
124 |
driver->trigger = 0; |
| 105 |
if (strcmp (indev, outdev) != 0) { |
125 |
if (strcmp (indev, outdev) != 0) { |
| 106 |
if (driver->capture_channels > 0) { |
126 |
if (driver->capture_channels > 0) { |
| 107 |
@@ -705,7 +706,9 @@ static int oss_driver_start (oss_driver_ |
127 |
@@ -464,7 +469,7 @@ static int oss_driver_start (oss_driver_ |
|
|
128 |
indev, __FILE__, __LINE__, errno); |
| 129 |
} |
| 130 |
#ifndef OSS_NO_COOKED_MODE |
| 131 |
- ioctl (infd, SNDCTL_DSP_COOKEDMODE, &flags); |
| 132 |
+ ioctl (infd, SNDCTL_DSP_COOKEDMODE, &cookedmode); |
| 133 |
#endif |
| 134 |
fragsize = driver->period_size * |
| 135 |
driver->capture_channels * samplesize; |
| 136 |
@@ -479,7 +484,7 @@ static int oss_driver_start (oss_driver_ |
| 137 |
outdev, __FILE__, __LINE__, errno); |
| 138 |
} |
| 139 |
#ifndef OSS_NO_COOKED_MODE |
| 140 |
- ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &flags); |
| 141 |
+ ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &cookedmode); |
| 142 |
#endif |
| 143 |
fragsize = driver->period_size * |
| 144 |
driver->playback_channels * samplesize; |
| 145 |
@@ -497,7 +502,7 @@ static int oss_driver_start (oss_driver_ |
| 146 |
return -1; |
| 147 |
} |
| 148 |
#ifndef OSS_NO_COOKED_MODE |
| 149 |
- ioctl (infd, SNDCTL_DSP_COOKEDMODE, &flags); |
| 150 |
+ ioctl (infd, SNDCTL_DSP_COOKEDMODE, &cookedmode); |
| 151 |
#endif |
| 152 |
} else if (driver->capture_channels == 0 && |
| 153 |
driver->playback_channels != 0) { |
| 154 |
@@ -510,7 +515,7 @@ static int oss_driver_start (oss_driver_ |
| 155 |
return -1; |
| 156 |
} |
| 157 |
#ifndef OSS_NO_COOKED_MODE |
| 158 |
- ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &flags); |
| 159 |
+ ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &cookedmode); |
| 160 |
#endif |
| 161 |
} else { |
| 162 |
infd = outfd = open (indev, O_RDWR | O_EXCL); |
| 163 |
@@ -521,7 +526,7 @@ static int oss_driver_start (oss_driver_ |
| 164 |
return -1; |
| 165 |
} |
| 166 |
#ifndef OSS_NO_COOKED_MODE |
| 167 |
- ioctl (infd, SNDCTL_DSP_COOKEDMODE, &flags); |
| 168 |
+ ioctl (infd, SNDCTL_DSP_COOKEDMODE, &cookedmode); |
| 169 |
#endif |
| 170 |
} |
| 171 |
if (infd >= 0 && outfd >= 0) { |
| 172 |
@@ -705,7 +710,9 @@ static int oss_driver_start (oss_driver_ |
| 108 |
sem_post (&driver->sem_start); |
173 |
sem_post (&driver->sem_start); |
| 109 |
} |
174 |
} |
| 110 |
|
175 |
|
|
Lines 115-121
Link Here
|
| 115 |
driver->next_periodtime = 0; |
180 |
driver->next_periodtime = 0; |
| 116 |
driver->iodelay = 0.0F; |
181 |
driver->iodelay = 0.0F; |
| 117 |
|
182 |
|
| 118 |
@@ -1143,6 +1146,23 @@ jack_driver_t * driver_initialize (jack_ |
183 |
@@ -1143,6 +1150,23 @@ jack_driver_t * driver_initialize (jack_ |
| 119 |
pnode = jack_slist_next (pnode); |
184 |
pnode = jack_slist_next (pnode); |
| 120 |
} |
185 |
} |
| 121 |
|
186 |
|
|
Lines 139-145
Link Here
|
| 139 |
driver->sample_rate = sample_rate; |
204 |
driver->sample_rate = sample_rate; |
| 140 |
driver->period_size = period_size; |
205 |
driver->period_size = period_size; |
| 141 |
driver->nperiods = nperiods; |
206 |
driver->nperiods = nperiods; |
| 142 |
@@ -1163,58 +1183,6 @@ jack_driver_t * driver_initialize (jack_ |
207 |
@@ -1163,58 +1187,6 @@ jack_driver_t * driver_initialize (jack_ |
| 143 |
} |
208 |
} |
| 144 |
driver->infd = -1; |
209 |
driver->infd = -1; |
| 145 |
driver->outfd = -1; |
210 |
driver->outfd = -1; |