SHA256
1
0
forked from pool/pulseaudio
pulseaudio/pulseaudio-0.9.5-wrong-endian-convert.diff

58 lines
1.9 KiB
Diff

Fix float32le <-> float32ne <-> float32be sample converters
diff -urNad pulseaudio~/src/pulsecore/sample-util.c pulseaudio/src/pulsecore/sample-util.c
--- pulseaudio~/src/pulsecore/sample-util.c 2006-08-18 23:38:49.000000000 +0200
+++ pulseaudio/src/pulsecore/sample-util.c 2006-10-19 00:19:56.233268731 +0200
@@ -68,6 +68,7 @@
case PA_SAMPLE_S16LE:
case PA_SAMPLE_S16BE:
case PA_SAMPLE_FLOAT32:
+ case PA_SAMPLE_FLOAT32RE:
c = 0;
break;
case PA_SAMPLE_ALAW:
diff -urNad pulseaudio~/src/pulsecore/sconv.c pulseaudio/src/pulsecore/sconv.c
--- pulseaudio~/src/pulsecore/sconv.c 2006-08-18 23:29:25.000000000 +0200
+++ pulseaudio/src/pulsecore/sconv.c 2006-10-19 00:19:56.229268481 +0200
@@ -72,6 +72,22 @@
oil_memcpy(b, a, sizeof(float) * n);
}
+static void float32re_to_float32ne(unsigned n, const void *a, float *b) {
+ assert(a);
+ assert(b);
+
+ while (n-- > 0)
+ ((uint32_t *)b)[n] = UINT32_SWAP (((uint32_t *)a)[n]);
+}
+
+static void float32re_from_float32ne(unsigned n, const float *a, void *b) {
+ assert(a);
+ assert(b);
+
+ while (n-- > 0)
+ ((uint32_t *)b)[n] = UINT32_SWAP (((uint32_t *)a)[n]);
+}
+
static void ulaw_to_float32ne(unsigned n, const void *a, float *b) {
const uint8_t *ca = a;
@@ -140,6 +156,8 @@
return pa_sconv_s16be_to_float32ne;
case PA_SAMPLE_FLOAT32NE:
return float32ne_to_float32ne;
+ case PA_SAMPLE_FLOAT32RE:
+ return float32re_to_float32ne;
case PA_SAMPLE_ALAW:
return alaw_to_float32ne;
case PA_SAMPLE_ULAW:
@@ -159,6 +177,8 @@
return pa_sconv_s16be_from_float32ne;
case PA_SAMPLE_FLOAT32NE:
return float32ne_from_float32ne;
+ case PA_SAMPLE_FLOAT32RE:
+ return float32re_from_float32ne;
case PA_SAMPLE_ALAW:
return alaw_from_float32ne;
case PA_SAMPLE_ULAW: