|
@@ -1,4 +1,3 @@
|
|
|
-/* DO NOT EDIT! This file is generated by sdlgenaudiocvt.pl */
|
|
|
/*
|
|
|
Simple DirectMedia Layer
|
|
|
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
|
@@ -23,15993 +22,396 @@
|
|
|
#include "../SDL_internal.h"
|
|
|
#include "SDL_audio.h"
|
|
|
#include "SDL_audio_c.h"
|
|
|
-
|
|
|
-#ifndef DEBUG_CONVERT
|
|
|
-#define DEBUG_CONVERT 0
|
|
|
-#endif
|
|
|
-
|
|
|
-
|
|
|
-/* If you can guarantee your data and need space, you can eliminate code... */
|
|
|
-
|
|
|
-/* Just build the arbitrary resamplers if you're saving code space. */
|
|
|
-#ifndef LESS_RESAMPLERS
|
|
|
-#define LESS_RESAMPLERS 0
|
|
|
-#endif
|
|
|
-
|
|
|
-/* Don't build any resamplers if you're REALLY saving code space. */
|
|
|
-#ifndef NO_RESAMPLERS
|
|
|
-#define NO_RESAMPLERS 0
|
|
|
-#endif
|
|
|
-
|
|
|
-/* Don't build any type converters if you're saving code space. */
|
|
|
-#ifndef NO_CONVERTERS
|
|
|
-#define NO_CONVERTERS 0
|
|
|
-#endif
|
|
|
-
|
|
|
-
|
|
|
-/* *INDENT-OFF* */
|
|
|
+#include "SDL_assert.h"
|
|
|
|
|
|
#define DIVBY127 0.0078740157480315f
|
|
|
#define DIVBY32767 3.05185094759972e-05f
|
|
|
#define DIVBY2147483647 4.6566128752458e-10f
|
|
|
|
|
|
-#if !NO_CONVERTERS
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U8_to_S8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint8 *src;
|
|
|
- Sint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U8 to AUDIO_S8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint8 *) cvt->buf;
|
|
|
- dst = (Sint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, ++src, ++dst) {
|
|
|
- const Sint8 val = ((*src) ^ 0x80);
|
|
|
- *dst = ((Sint8) val);
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U8_to_U16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint8 *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U8 to AUDIO_U16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Uint16 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const Uint16 val = (((Uint16) *src) << 8);
|
|
|
- *dst = SDL_SwapLE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U8_to_S16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint8 *src;
|
|
|
- Sint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U8 to AUDIO_S16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint16 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const Sint16 val = (((Sint16) ((*src) ^ 0x80)) << 8);
|
|
|
- *dst = ((Sint16) SDL_SwapLE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U8_to_U16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint8 *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U8 to AUDIO_U16MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Uint16 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const Uint16 val = (((Uint16) *src) << 8);
|
|
|
- *dst = SDL_SwapBE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U8_to_S16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint8 *src;
|
|
|
- Sint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U8 to AUDIO_S16MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint16 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const Sint16 val = (((Sint16) ((*src) ^ 0x80)) << 8);
|
|
|
- *dst = ((Sint16) SDL_SwapBE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U8_to_S32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint8 *src;
|
|
|
- Sint32 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U8 to AUDIO_S32LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint32 *) (cvt->buf + cvt->len_cvt * 4)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const Sint32 val = (((Sint32) ((*src) ^ 0x80)) << 24);
|
|
|
- *dst = ((Sint32) SDL_SwapLE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 4;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U8_to_S32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint8 *src;
|
|
|
- Sint32 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U8 to AUDIO_S32MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint32 *) (cvt->buf + cvt->len_cvt * 4)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const Sint32 val = (((Sint32) ((*src) ^ 0x80)) << 24);
|
|
|
- *dst = ((Sint32) SDL_SwapBE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 4;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U8_to_F32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void SDLCALL
|
|
|
+SDL_Convert_S8_to_F32(SDL_AudioCVT *cvt, SDL_AudioFormat format)
|
|
|
{
|
|
|
+ const Uint8 *src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
+ float *dst = ((float *) (cvt->buf + cvt->len_cvt * 4)) - 1;
|
|
|
int i;
|
|
|
- const Uint8 *src;
|
|
|
- float *dst;
|
|
|
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U8 to AUDIO_F32LSB.\n");
|
|
|
-#endif
|
|
|
+ LOG_DEBUG_CONVERT("AUDIO_S8", "AUDIO_F32");
|
|
|
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((float *) (cvt->buf + cvt->len_cvt * 4)) - 1;
|
|
|
for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const float val = ((((float) *src) * DIVBY127) - 1.0f);
|
|
|
- *dst = SDL_SwapFloatLE(val);
|
|
|
+ *dst = (((float) ((Sint8) *src)) * DIVBY127);
|
|
|
}
|
|
|
|
|
|
cvt->len_cvt *= 4;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32LSB);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U8_to_F32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void SDLCALL
|
|
|
+SDL_Convert_U8_to_F32(SDL_AudioCVT *cvt, SDL_AudioFormat format)
|
|
|
{
|
|
|
+ const Uint8 *src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
+ float *dst = ((float *) (cvt->buf + cvt->len_cvt * 4)) - 1;
|
|
|
int i;
|
|
|
- const Uint8 *src;
|
|
|
- float *dst;
|
|
|
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U8 to AUDIO_F32MSB.\n");
|
|
|
-#endif
|
|
|
+ LOG_DEBUG_CONVERT("AUDIO_U8", "AUDIO_F32");
|
|
|
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((float *) (cvt->buf + cvt->len_cvt * 4)) - 1;
|
|
|
for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const float val = ((((float) *src) * DIVBY127) - 1.0f);
|
|
|
- *dst = SDL_SwapFloatBE(val);
|
|
|
+ *dst = ((((float) *src) * DIVBY127) - 1.0f);
|
|
|
}
|
|
|
|
|
|
cvt->len_cvt *= 4;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S8_to_U8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint8 *src;
|
|
|
- Uint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S8 to AUDIO_U8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint8 *) cvt->buf;
|
|
|
- dst = (Uint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, ++src, ++dst) {
|
|
|
- const Uint8 val = ((((Sint8) *src)) ^ 0x80);
|
|
|
- *dst = val;
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U8);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S8_to_U16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void SDLCALL
|
|
|
+SDL_Convert_S16_to_F32(SDL_AudioCVT *cvt, SDL_AudioFormat format)
|
|
|
{
|
|
|
+ const Sint16 *src = ((const Sint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
+ float *dst = ((float *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
int i;
|
|
|
- const Uint8 *src;
|
|
|
- Uint16 *dst;
|
|
|
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S8 to AUDIO_U16LSB.\n");
|
|
|
-#endif
|
|
|
+ LOG_DEBUG_CONVERT("AUDIO_S16", "AUDIO_F32");
|
|
|
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Uint16 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const Uint16 val = (((Uint16) ((((Sint8) *src)) ^ 0x80)) << 8);
|
|
|
- *dst = SDL_SwapLE16(val);
|
|
|
+ for (i = cvt->len_cvt / sizeof (Sint16); i; --i, --src, --dst) {
|
|
|
+ *dst = (((float) *src) * DIVBY32767);
|
|
|
}
|
|
|
|
|
|
cvt->len_cvt *= 2;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16LSB);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S8_to_S16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void SDLCALL
|
|
|
+SDL_Convert_U16_to_F32(SDL_AudioCVT *cvt, SDL_AudioFormat format)
|
|
|
{
|
|
|
+ const Uint16 *src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
+ float *dst = ((float *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
int i;
|
|
|
- const Uint8 *src;
|
|
|
- Sint16 *dst;
|
|
|
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S8 to AUDIO_S16LSB.\n");
|
|
|
-#endif
|
|
|
+ LOG_DEBUG_CONVERT("AUDIO_U16", "AUDIO_F32");
|
|
|
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint16 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const Sint16 val = (((Sint16) ((Sint8) *src)) << 8);
|
|
|
- *dst = ((Sint16) SDL_SwapLE16(val));
|
|
|
+ for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
+ *dst = ((((float) *src) * DIVBY32767) - 1.0f);
|
|
|
}
|
|
|
|
|
|
cvt->len_cvt *= 2;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16LSB);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S8_to_U16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void SDLCALL
|
|
|
+SDL_Convert_S32_to_F32(SDL_AudioCVT *cvt, SDL_AudioFormat format)
|
|
|
{
|
|
|
+ const Uint32 *src = (const Uint32 *) cvt->buf;
|
|
|
+ float *dst = (float *) cvt->buf;
|
|
|
int i;
|
|
|
- const Uint8 *src;
|
|
|
- Uint16 *dst;
|
|
|
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S8 to AUDIO_U16MSB.\n");
|
|
|
-#endif
|
|
|
+ LOG_DEBUG_CONVERT("AUDIO_S32", "AUDIO_F32");
|
|
|
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Uint16 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const Uint16 val = (((Uint16) ((((Sint8) *src)) ^ 0x80)) << 8);
|
|
|
- *dst = SDL_SwapBE16(val);
|
|
|
+ for (i = cvt->len_cvt / sizeof (Sint32); i; --i, ++src, ++dst) {
|
|
|
+ *dst = (((float) *src) * DIVBY2147483647);
|
|
|
}
|
|
|
|
|
|
- cvt->len_cvt *= 2;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16MSB);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S8_to_S16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void SDLCALL
|
|
|
+SDL_Convert_F32_to_S8(SDL_AudioCVT *cvt, SDL_AudioFormat format)
|
|
|
{
|
|
|
+ const float *src = (const float *) cvt->buf;
|
|
|
+ Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
int i;
|
|
|
- const Uint8 *src;
|
|
|
- Sint16 *dst;
|
|
|
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S8 to AUDIO_S16MSB.\n");
|
|
|
-#endif
|
|
|
+ LOG_DEBUG_CONVERT("AUDIO_F32", "AUDIO_S8");
|
|
|
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint16 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const Sint16 val = (((Sint16) ((Sint8) *src)) << 8);
|
|
|
- *dst = ((Sint16) SDL_SwapBE16(val));
|
|
|
+ for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
+ *dst = (Sint8) (*src * 127.0f);
|
|
|
}
|
|
|
|
|
|
- cvt->len_cvt *= 2;
|
|
|
+ cvt->len_cvt /= 4;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16MSB);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_S8);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S8_to_S32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void SDLCALL
|
|
|
+SDL_Convert_F32_to_U8(SDL_AudioCVT *cvt, SDL_AudioFormat format)
|
|
|
{
|
|
|
+ const float *src = (const float *) cvt->buf;
|
|
|
+ Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
int i;
|
|
|
- const Uint8 *src;
|
|
|
- Sint32 *dst;
|
|
|
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S8 to AUDIO_S32LSB.\n");
|
|
|
-#endif
|
|
|
+ LOG_DEBUG_CONVERT("AUDIO_F32", "AUDIO_U8");
|
|
|
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint32 *) (cvt->buf + cvt->len_cvt * 4)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const Sint32 val = (((Sint32) ((Sint8) *src)) << 24);
|
|
|
- *dst = ((Sint32) SDL_SwapLE32(val));
|
|
|
+ for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
+ *dst = (Uint8) ((*src + 1.0f) * 127.0f);
|
|
|
}
|
|
|
|
|
|
- cvt->len_cvt *= 4;
|
|
|
+ cvt->len_cvt /= 4;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32LSB);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_U8);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S8_to_S32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void SDLCALL
|
|
|
+SDL_Convert_F32_to_S16(SDL_AudioCVT *cvt, SDL_AudioFormat format)
|
|
|
{
|
|
|
+ const float *src = (const float *) cvt->buf;
|
|
|
+ Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
int i;
|
|
|
- const Uint8 *src;
|
|
|
- Sint32 *dst;
|
|
|
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S8 to AUDIO_S32MSB.\n");
|
|
|
-#endif
|
|
|
+ LOG_DEBUG_CONVERT("AUDIO_F32", "AUDIO_S16");
|
|
|
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint32 *) (cvt->buf + cvt->len_cvt * 4)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const Sint32 val = (((Sint32) ((Sint8) *src)) << 24);
|
|
|
- *dst = ((Sint32) SDL_SwapBE32(val));
|
|
|
+ for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
+ *dst = (Sint16) (*src * 32767.0f);
|
|
|
}
|
|
|
|
|
|
- cvt->len_cvt *= 4;
|
|
|
+ cvt->len_cvt /= 2;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32MSB);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_S16SYS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S8_to_F32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void SDLCALL
|
|
|
+SDL_Convert_F32_to_U16(SDL_AudioCVT *cvt, SDL_AudioFormat format)
|
|
|
{
|
|
|
+ const float *src = (const float *) cvt->buf;
|
|
|
+ Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
int i;
|
|
|
- const Uint8 *src;
|
|
|
- float *dst;
|
|
|
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S8 to AUDIO_F32LSB.\n");
|
|
|
-#endif
|
|
|
+ LOG_DEBUG_CONVERT("AUDIO_F32", "AUDIO_U16");
|
|
|
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((float *) (cvt->buf + cvt->len_cvt * 4)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const float val = (((float) ((Sint8) *src)) * DIVBY127);
|
|
|
- *dst = SDL_SwapFloatLE(val);
|
|
|
+ for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
+ *dst = (Uint16) ((*src + 1.0f) * 32767.0f);
|
|
|
}
|
|
|
|
|
|
- cvt->len_cvt *= 4;
|
|
|
+ cvt->len_cvt /= 2;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32LSB);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_U16SYS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S8_to_F32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void SDLCALL
|
|
|
+SDL_Convert_F32_to_S32(SDL_AudioCVT *cvt, SDL_AudioFormat format)
|
|
|
{
|
|
|
+ const float *src = (const float *) cvt->buf;
|
|
|
+ Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
int i;
|
|
|
- const Uint8 *src;
|
|
|
- float *dst;
|
|
|
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S8 to AUDIO_F32MSB.\n");
|
|
|
-#endif
|
|
|
+ LOG_DEBUG_CONVERT("AUDIO_F32", "AUDIO_S32");
|
|
|
|
|
|
- src = ((const Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((float *) (cvt->buf + cvt->len_cvt * 4)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint8); i; --i, --src, --dst) {
|
|
|
- const float val = (((float) ((Sint8) *src)) * DIVBY127);
|
|
|
- *dst = SDL_SwapFloatBE(val);
|
|
|
+ for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
+ *dst = (Sint32) (*src * 2147483647.0);
|
|
|
}
|
|
|
|
|
|
- cvt->len_cvt *= 4;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32MSB);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_S32SYS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16LSB_to_U8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void
|
|
|
+SDL_Upsample_Arbitrary(SDL_AudioCVT *cvt, const int channels)
|
|
|
{
|
|
|
+ const int srcsize = cvt->len_cvt - (64 * channels);
|
|
|
+ const int dstsize = (int) (((double)(cvt->len_cvt/(channels*4))) * cvt->rate_incr) * (channels*4);
|
|
|
+ register int eps = 0;
|
|
|
+ float *dst = ((float *) (cvt->buf + dstsize)) - 8;
|
|
|
+ const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
+ const float *target = ((const float *) cvt->buf);
|
|
|
+ const size_t cpy = sizeof (float) * channels;
|
|
|
+ float last_sample[8];
|
|
|
+ float sample[8];
|
|
|
int i;
|
|
|
- const Uint16 *src;
|
|
|
- Uint8 *dst;
|
|
|
|
|
|
#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16LSB to AUDIO_U8.\n");
|
|
|
+ fprintf(stderr, "Upsample arbitrary (x%f), %d channels.\n", cvt->rate_incr, channels);
|
|
|
#endif
|
|
|
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Uint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Uint8 val = ((Uint8) (SDL_SwapLE16(*src) >> 8));
|
|
|
- *dst = val;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16LSB_to_S8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint8 *dst;
|
|
|
+ SDL_assert(channels <= 8);
|
|
|
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16LSB to AUDIO_S8.\n");
|
|
|
-#endif
|
|
|
+ SDL_memcpy(sample, src, cpy);
|
|
|
+ SDL_memcpy(last_sample, src, cpy);
|
|
|
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Sint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Sint8 val = ((Sint8) (((SDL_SwapLE16(*src)) ^ 0x8000) >> 8));
|
|
|
- *dst = ((Sint8) val);
|
|
|
+ while (dst >= target) {
|
|
|
+ SDL_memcpy(dst, sample, cpy);
|
|
|
+ dst -= 8;
|
|
|
+ eps += srcsize;
|
|
|
+ if ((eps << 1) >= dstsize) {
|
|
|
+ src -= 8;
|
|
|
+ for (i = 0; i < channels; i++) {
|
|
|
+ sample[i] = (float) ((((double) src[i]) + ((double) last_sample[i])) * 0.5);
|
|
|
+ }
|
|
|
+ SDL_memcpy(last_sample, sample, cpy);
|
|
|
+ eps -= dstsize;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- cvt->len_cvt /= 2;
|
|
|
+ cvt->len_cvt = dstsize;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S8);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16LSB_to_S16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void
|
|
|
+SDL_Downsample_Arbitrary(SDL_AudioCVT *cvt, const int channels)
|
|
|
{
|
|
|
+ const int srcsize = cvt->len_cvt - (64 * channels);
|
|
|
+ const int dstsize = (int) (((double)(cvt->len_cvt/(channels*4))) * cvt->rate_incr) * (channels*4);
|
|
|
+ register int eps = 0;
|
|
|
+ float *dst = (float *) cvt->buf;
|
|
|
+ const float *src = (float *) cvt->buf;
|
|
|
+ const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
+ const size_t cpy = sizeof (float) * channels;
|
|
|
+ float last_sample[8];
|
|
|
+ float sample[8];
|
|
|
int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint16 *dst;
|
|
|
|
|
|
#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16LSB to AUDIO_S16LSB.\n");
|
|
|
+ fprintf(stderr, "Downsample arbitrary (x%f), %d channels.\n", cvt->rate_incr, channels);
|
|
|
#endif
|
|
|
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Sint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Sint16 val = ((SDL_SwapLE16(*src)) ^ 0x8000);
|
|
|
- *dst = ((Sint16) SDL_SwapLE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16LSB_to_U16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Uint16 *dst;
|
|
|
+ SDL_assert(channels <= 8);
|
|
|
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16LSB to AUDIO_U16MSB.\n");
|
|
|
-#endif
|
|
|
+ SDL_memcpy(sample, src, cpy);
|
|
|
+ SDL_memcpy(last_sample, src, cpy);
|
|
|
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Uint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Uint16 val = SDL_SwapLE16(*src);
|
|
|
- *dst = SDL_SwapBE16(val);
|
|
|
+ while (dst < target) {
|
|
|
+ src += 8;
|
|
|
+ eps += dstsize;
|
|
|
+ if ((eps << 1) >= srcsize) {
|
|
|
+ SDL_memcpy(dst, sample, cpy);
|
|
|
+ dst += 8;
|
|
|
+ for (i = 0; i < channels; i++) {
|
|
|
+ sample[i] = (float) ((((double) src[i]) + ((double) last_sample[i])) * 0.5);
|
|
|
+ }
|
|
|
+ SDL_memcpy(last_sample, sample, cpy);
|
|
|
+ eps -= srcsize;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+ cvt->len_cvt = dstsize;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16MSB);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16LSB_to_S16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void
|
|
|
+SDL_Upsample_x2(SDL_AudioCVT *cvt, const int channels)
|
|
|
{
|
|
|
+ const int dstsize = cvt->len_cvt * 2;
|
|
|
+ float *dst = ((float *) (cvt->buf + dstsize)) - (channels * 2);
|
|
|
+ const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - channels;
|
|
|
+ const float *target = ((const float *) cvt->buf);
|
|
|
+ const size_t cpy = sizeof (float) * channels;
|
|
|
+ float last_sample[8];
|
|
|
int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint16 *dst;
|
|
|
|
|
|
#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16LSB to AUDIO_S16MSB.\n");
|
|
|
+ fprintf(stderr, "Upsample (x2), %d channels.\n", channels);
|
|
|
#endif
|
|
|
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Sint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Sint16 val = ((SDL_SwapLE16(*src)) ^ 0x8000);
|
|
|
- *dst = ((Sint16) SDL_SwapBE16(val));
|
|
|
+ SDL_assert(channels <= 8);
|
|
|
+ SDL_memcpy(last_sample, src, cpy);
|
|
|
+
|
|
|
+ while (dst >= target) {
|
|
|
+ for (i = 0; i < channels; i++) {
|
|
|
+ dst[i] = (float) ((((double)src[i]) + ((double)last_sample[i])) * 0.5);
|
|
|
+ }
|
|
|
+ dst -= channels;
|
|
|
+ SDL_memcpy(dst, src, cpy);
|
|
|
+ SDL_memcpy(last_sample, src, cpy);
|
|
|
+ src -= channels;
|
|
|
+ dst -= channels;
|
|
|
}
|
|
|
|
|
|
+ cvt->len_cvt = dstsize;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16MSB);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16LSB_to_S32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void
|
|
|
+SDL_Upsample_x4(SDL_AudioCVT *cvt, const int channels)
|
|
|
{
|
|
|
+ const int dstsize = cvt->len_cvt * 4;
|
|
|
+ float *dst = ((float *) (cvt->buf + dstsize)) - (channels * 4);
|
|
|
+ const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - channels;
|
|
|
+ const float *target = ((const float *) cvt->buf);
|
|
|
+ const size_t cpy = sizeof (float) * channels;
|
|
|
+ float last_sample[8];
|
|
|
int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint32 *dst;
|
|
|
|
|
|
#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16LSB to AUDIO_S32LSB.\n");
|
|
|
+ fprintf(stderr, "Upsample (x4), %d channels.\n", channels);
|
|
|
#endif
|
|
|
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint32 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const Sint32 val = (((Sint32) ((SDL_SwapLE16(*src)) ^ 0x8000)) << 16);
|
|
|
- *dst = ((Sint32) SDL_SwapLE32(val));
|
|
|
+ SDL_assert(channels <= 8);
|
|
|
+ SDL_memcpy(last_sample, src, cpy);
|
|
|
+
|
|
|
+ while (dst >= target) {
|
|
|
+ for (i = 0; i < channels; i++) {
|
|
|
+ dst[i] = (float) ((((double) src[i]) + (3.0 * ((double) last_sample[i]))) * 0.25);
|
|
|
+ }
|
|
|
+ dst -= channels;
|
|
|
+ for (i = 0; i < channels; i++) {
|
|
|
+ dst[i] = (float) ((((double) src[i]) + ((double) last_sample[i])) * 0.25);
|
|
|
+ }
|
|
|
+ dst -= channels;
|
|
|
+ for (i = 0; i < channels; i++) {
|
|
|
+ dst[i] = (float) (((3.0 * ((double) src[i])) + ((double) last_sample[i])) * 0.25);
|
|
|
+ }
|
|
|
+ dst -= channels;
|
|
|
+ SDL_memcpy(dst, src, cpy);
|
|
|
+ dst -= channels;
|
|
|
+ SDL_memcpy(last_sample, src, cpy);
|
|
|
+ src -= channels;
|
|
|
}
|
|
|
|
|
|
- cvt->len_cvt *= 2;
|
|
|
+ cvt->len_cvt = dstsize;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32LSB);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16LSB_to_S32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
+void
|
|
|
+SDL_Downsample_Multiple(SDL_AudioCVT *cvt, const int multiple, const int channels)
|
|
|
{
|
|
|
+ const int dstsize = cvt->len_cvt / multiple;
|
|
|
+ float *dst = (float *) cvt->buf;
|
|
|
+ const float *src = (float *) cvt->buf;
|
|
|
+ const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
+ const size_t cpy = sizeof (float) * channels;
|
|
|
+ float last_sample[8];
|
|
|
int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint32 *dst;
|
|
|
|
|
|
#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16LSB to AUDIO_S32MSB.\n");
|
|
|
+ fprintf(stderr, "Downsample (x%d), %d channels.\n", multiple, channels);
|
|
|
#endif
|
|
|
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint32 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const Sint32 val = (((Sint32) ((SDL_SwapLE16(*src)) ^ 0x8000)) << 16);
|
|
|
- *dst = ((Sint32) SDL_SwapBE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16LSB_to_F32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- float *dst;
|
|
|
+ SDL_assert(channels <= 8);
|
|
|
+ SDL_memcpy(last_sample, src, cpy);
|
|
|
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16LSB to AUDIO_F32LSB.\n");
|
|
|
-#endif
|
|
|
+ while (dst < target) {
|
|
|
+ for (i = 0; i < channels; i++) {
|
|
|
+ dst[i] = (float) ((((double)src[i]) + ((double)last_sample[i])) * 0.5);
|
|
|
+ }
|
|
|
+ dst += channels;
|
|
|
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((float *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const float val = ((((float) SDL_SwapLE16(*src)) * DIVBY32767) - 1.0f);
|
|
|
- *dst = SDL_SwapFloatLE(val);
|
|
|
+ SDL_memcpy(last_sample, src, cpy);
|
|
|
+ src += (channels * multiple);
|
|
|
}
|
|
|
|
|
|
- cvt->len_cvt *= 2;
|
|
|
+ cvt->len_cvt = dstsize;
|
|
|
if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32LSB);
|
|
|
+ cvt->filters[cvt->filter_index](cvt, AUDIO_F32SYS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16LSB_to_F32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- float *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16LSB to AUDIO_F32MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((float *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const float val = ((((float) SDL_SwapLE16(*src)) * DIVBY32767) - 1.0f);
|
|
|
- *dst = SDL_SwapFloatBE(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16LSB_to_U8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Uint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16LSB to AUDIO_U8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Uint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Uint8 val = ((Uint8) (((((Sint16) SDL_SwapLE16(*src))) ^ 0x8000) >> 8));
|
|
|
- *dst = val;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16LSB_to_S8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16LSB to AUDIO_S8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Sint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Sint8 val = ((Sint8) (((Sint16) SDL_SwapLE16(*src)) >> 8));
|
|
|
- *dst = ((Sint8) val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16LSB_to_U16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16LSB to AUDIO_U16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Uint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Uint16 val = ((((Sint16) SDL_SwapLE16(*src))) ^ 0x8000);
|
|
|
- *dst = SDL_SwapLE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16LSB_to_U16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16LSB to AUDIO_U16MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Uint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Uint16 val = ((((Sint16) SDL_SwapLE16(*src))) ^ 0x8000);
|
|
|
- *dst = SDL_SwapBE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16LSB_to_S16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16LSB to AUDIO_S16MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Sint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Sint16 val = ((Sint16) SDL_SwapLE16(*src));
|
|
|
- *dst = ((Sint16) SDL_SwapBE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16LSB_to_S32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint32 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16LSB to AUDIO_S32LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint32 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const Sint32 val = (((Sint32) ((Sint16) SDL_SwapLE16(*src))) << 16);
|
|
|
- *dst = ((Sint32) SDL_SwapLE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16LSB_to_S32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint32 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16LSB to AUDIO_S32MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint32 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const Sint32 val = (((Sint32) ((Sint16) SDL_SwapLE16(*src))) << 16);
|
|
|
- *dst = ((Sint32) SDL_SwapBE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16LSB_to_F32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- float *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16LSB to AUDIO_F32LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((float *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const float val = (((float) ((Sint16) SDL_SwapLE16(*src))) * DIVBY32767);
|
|
|
- *dst = SDL_SwapFloatLE(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16LSB_to_F32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- float *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16LSB to AUDIO_F32MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((float *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const float val = (((float) ((Sint16) SDL_SwapLE16(*src))) * DIVBY32767);
|
|
|
- *dst = SDL_SwapFloatBE(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16MSB_to_U8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Uint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16MSB to AUDIO_U8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Uint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Uint8 val = ((Uint8) (SDL_SwapBE16(*src) >> 8));
|
|
|
- *dst = val;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16MSB_to_S8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16MSB to AUDIO_S8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Sint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Sint8 val = ((Sint8) (((SDL_SwapBE16(*src)) ^ 0x8000) >> 8));
|
|
|
- *dst = ((Sint8) val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16MSB_to_U16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16MSB to AUDIO_U16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Uint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Uint16 val = SDL_SwapBE16(*src);
|
|
|
- *dst = SDL_SwapLE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16MSB_to_S16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16MSB to AUDIO_S16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Sint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Sint16 val = ((SDL_SwapBE16(*src)) ^ 0x8000);
|
|
|
- *dst = ((Sint16) SDL_SwapLE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16MSB_to_S16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16MSB to AUDIO_S16MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Sint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Sint16 val = ((SDL_SwapBE16(*src)) ^ 0x8000);
|
|
|
- *dst = ((Sint16) SDL_SwapBE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16MSB_to_S32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint32 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16MSB to AUDIO_S32LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint32 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const Sint32 val = (((Sint32) ((SDL_SwapBE16(*src)) ^ 0x8000)) << 16);
|
|
|
- *dst = ((Sint32) SDL_SwapLE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16MSB_to_S32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint32 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16MSB to AUDIO_S32MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint32 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const Sint32 val = (((Sint32) ((SDL_SwapBE16(*src)) ^ 0x8000)) << 16);
|
|
|
- *dst = ((Sint32) SDL_SwapBE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16MSB_to_F32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- float *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16MSB to AUDIO_F32LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((float *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const float val = ((((float) SDL_SwapBE16(*src)) * DIVBY32767) - 1.0f);
|
|
|
- *dst = SDL_SwapFloatLE(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_U16MSB_to_F32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- float *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_U16MSB to AUDIO_F32MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((float *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const float val = ((((float) SDL_SwapBE16(*src)) * DIVBY32767) - 1.0f);
|
|
|
- *dst = SDL_SwapFloatBE(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16MSB_to_U8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Uint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16MSB to AUDIO_U8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Uint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Uint8 val = ((Uint8) (((((Sint16) SDL_SwapBE16(*src))) ^ 0x8000) >> 8));
|
|
|
- *dst = val;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16MSB_to_S8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16MSB to AUDIO_S8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Sint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Sint8 val = ((Sint8) (((Sint16) SDL_SwapBE16(*src)) >> 8));
|
|
|
- *dst = ((Sint8) val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16MSB_to_U16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16MSB to AUDIO_U16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Uint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Uint16 val = ((((Sint16) SDL_SwapBE16(*src))) ^ 0x8000);
|
|
|
- *dst = SDL_SwapLE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16MSB_to_S16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16MSB to AUDIO_S16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Sint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Sint16 val = ((Sint16) SDL_SwapBE16(*src));
|
|
|
- *dst = ((Sint16) SDL_SwapLE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16MSB_to_U16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16MSB to AUDIO_U16MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint16 *) cvt->buf;
|
|
|
- dst = (Uint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, ++src, ++dst) {
|
|
|
- const Uint16 val = ((((Sint16) SDL_SwapBE16(*src))) ^ 0x8000);
|
|
|
- *dst = SDL_SwapBE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16MSB_to_S32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint32 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16MSB to AUDIO_S32LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint32 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const Sint32 val = (((Sint32) ((Sint16) SDL_SwapBE16(*src))) << 16);
|
|
|
- *dst = ((Sint32) SDL_SwapLE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16MSB_to_S32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- Sint32 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16MSB to AUDIO_S32MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((Sint32 *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const Sint32 val = (((Sint32) ((Sint16) SDL_SwapBE16(*src))) << 16);
|
|
|
- *dst = ((Sint32) SDL_SwapBE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16MSB_to_F32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- float *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16MSB to AUDIO_F32LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((float *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const float val = (((float) ((Sint16) SDL_SwapBE16(*src))) * DIVBY32767);
|
|
|
- *dst = SDL_SwapFloatLE(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S16MSB_to_F32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint16 *src;
|
|
|
- float *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S16MSB to AUDIO_F32MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = ((const Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- dst = ((float *) (cvt->buf + cvt->len_cvt * 2)) - 1;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint16); i; --i, --src, --dst) {
|
|
|
- const float val = (((float) ((Sint16) SDL_SwapBE16(*src))) * DIVBY32767);
|
|
|
- *dst = SDL_SwapFloatBE(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt *= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32LSB_to_U8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- Uint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32LSB to AUDIO_U8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (Uint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const Uint8 val = ((Uint8) (((((Sint32) SDL_SwapLE32(*src))) ^ 0x80000000) >> 24));
|
|
|
- *dst = val;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 4;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32LSB_to_S8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- Sint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32LSB to AUDIO_S8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (Sint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const Sint8 val = ((Sint8) (((Sint32) SDL_SwapLE32(*src)) >> 24));
|
|
|
- *dst = ((Sint8) val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 4;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32LSB_to_U16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32LSB to AUDIO_U16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (Uint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const Uint16 val = ((Uint16) (((((Sint32) SDL_SwapLE32(*src))) ^ 0x80000000) >> 16));
|
|
|
- *dst = SDL_SwapLE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32LSB_to_S16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- Sint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32LSB to AUDIO_S16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (Sint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const Sint16 val = ((Sint16) (((Sint32) SDL_SwapLE32(*src)) >> 16));
|
|
|
- *dst = ((Sint16) SDL_SwapLE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32LSB_to_U16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32LSB to AUDIO_U16MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (Uint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const Uint16 val = ((Uint16) (((((Sint32) SDL_SwapLE32(*src))) ^ 0x80000000) >> 16));
|
|
|
- *dst = SDL_SwapBE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32LSB_to_S16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- Sint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32LSB to AUDIO_S16MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (Sint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const Sint16 val = ((Sint16) (((Sint32) SDL_SwapLE32(*src)) >> 16));
|
|
|
- *dst = ((Sint16) SDL_SwapBE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32LSB_to_S32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- Sint32 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32LSB to AUDIO_S32MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (Sint32 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const Sint32 val = ((Sint32) SDL_SwapLE32(*src));
|
|
|
- *dst = ((Sint32) SDL_SwapBE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32LSB_to_F32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- float *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32LSB to AUDIO_F32LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (float *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const float val = (((float) ((Sint32) SDL_SwapLE32(*src))) * DIVBY2147483647);
|
|
|
- *dst = SDL_SwapFloatLE(val);
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32LSB_to_F32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- float *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32LSB to AUDIO_F32MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (float *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const float val = (((float) ((Sint32) SDL_SwapLE32(*src))) * DIVBY2147483647);
|
|
|
- *dst = SDL_SwapFloatBE(val);
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32MSB_to_U8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- Uint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32MSB to AUDIO_U8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (Uint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const Uint8 val = ((Uint8) (((((Sint32) SDL_SwapBE32(*src))) ^ 0x80000000) >> 24));
|
|
|
- *dst = val;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 4;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32MSB_to_S8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- Sint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32MSB to AUDIO_S8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (Sint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const Sint8 val = ((Sint8) (((Sint32) SDL_SwapBE32(*src)) >> 24));
|
|
|
- *dst = ((Sint8) val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 4;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32MSB_to_U16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32MSB to AUDIO_U16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (Uint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const Uint16 val = ((Uint16) (((((Sint32) SDL_SwapBE32(*src))) ^ 0x80000000) >> 16));
|
|
|
- *dst = SDL_SwapLE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32MSB_to_S16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- Sint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32MSB to AUDIO_S16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (Sint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const Sint16 val = ((Sint16) (((Sint32) SDL_SwapBE32(*src)) >> 16));
|
|
|
- *dst = ((Sint16) SDL_SwapLE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32MSB_to_U16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32MSB to AUDIO_U16MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (Uint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const Uint16 val = ((Uint16) (((((Sint32) SDL_SwapBE32(*src))) ^ 0x80000000) >> 16));
|
|
|
- *dst = SDL_SwapBE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32MSB_to_S16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- Sint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32MSB to AUDIO_S16MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (Sint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const Sint16 val = ((Sint16) (((Sint32) SDL_SwapBE32(*src)) >> 16));
|
|
|
- *dst = ((Sint16) SDL_SwapBE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32MSB_to_S32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- Sint32 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32MSB to AUDIO_S32LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (Sint32 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const Sint32 val = ((Sint32) SDL_SwapBE32(*src));
|
|
|
- *dst = ((Sint32) SDL_SwapLE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32MSB_to_F32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- float *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32MSB to AUDIO_F32LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (float *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const float val = (((float) ((Sint32) SDL_SwapBE32(*src))) * DIVBY2147483647);
|
|
|
- *dst = SDL_SwapFloatLE(val);
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_S32MSB_to_F32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const Uint32 *src;
|
|
|
- float *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_S32MSB to AUDIO_F32MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const Uint32 *) cvt->buf;
|
|
|
- dst = (float *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (Uint32); i; --i, ++src, ++dst) {
|
|
|
- const float val = (((float) ((Sint32) SDL_SwapBE32(*src))) * DIVBY2147483647);
|
|
|
- *dst = SDL_SwapFloatBE(val);
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32LSB_to_U8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Uint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32LSB to AUDIO_U8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Uint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Uint8 val = ((Uint8) ((SDL_SwapFloatLE(*src) + 1.0f) * 127.0f));
|
|
|
- *dst = val;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 4;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32LSB_to_S8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Sint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32LSB to AUDIO_S8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Sint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Sint8 val = ((Sint8) (SDL_SwapFloatLE(*src) * 127.0f));
|
|
|
- *dst = ((Sint8) val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 4;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32LSB_to_U16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32LSB to AUDIO_U16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Uint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Uint16 val = ((Uint16) ((SDL_SwapFloatLE(*src) + 1.0f) * 32767.0f));
|
|
|
- *dst = SDL_SwapLE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32LSB_to_S16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Sint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32LSB to AUDIO_S16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Sint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Sint16 val = ((Sint16) (SDL_SwapFloatLE(*src) * 32767.0f));
|
|
|
- *dst = ((Sint16) SDL_SwapLE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32LSB_to_U16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32LSB to AUDIO_U16MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Uint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Uint16 val = ((Uint16) ((SDL_SwapFloatLE(*src) + 1.0f) * 32767.0f));
|
|
|
- *dst = SDL_SwapBE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32LSB_to_S16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Sint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32LSB to AUDIO_S16MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Sint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Sint16 val = ((Sint16) (SDL_SwapFloatLE(*src) * 32767.0f));
|
|
|
- *dst = ((Sint16) SDL_SwapBE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32LSB_to_S32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Sint32 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32LSB to AUDIO_S32LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Sint32 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Sint32 val = ((Sint32) (SDL_SwapFloatLE(*src) * 2147483647.0));
|
|
|
- *dst = ((Sint32) SDL_SwapLE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32LSB_to_S32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Sint32 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32LSB to AUDIO_S32MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Sint32 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Sint32 val = ((Sint32) (SDL_SwapFloatLE(*src) * 2147483647.0));
|
|
|
- *dst = ((Sint32) SDL_SwapBE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32LSB_to_F32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- float *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32LSB to AUDIO_F32MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (float *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const float val = SDL_SwapFloatLE(*src);
|
|
|
- *dst = SDL_SwapFloatBE(val);
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32MSB_to_U8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Uint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32MSB to AUDIO_U8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Uint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Uint8 val = ((Uint8) ((SDL_SwapFloatBE(*src) + 1.0f) * 127.0f));
|
|
|
- *dst = val;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 4;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32MSB_to_S8(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Sint8 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32MSB to AUDIO_S8.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Sint8 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Sint8 val = ((Sint8) (SDL_SwapFloatBE(*src) * 127.0f));
|
|
|
- *dst = ((Sint8) val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 4;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S8);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32MSB_to_U16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32MSB to AUDIO_U16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Uint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Uint16 val = ((Uint16) ((SDL_SwapFloatBE(*src) + 1.0f) * 32767.0f));
|
|
|
- *dst = SDL_SwapLE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32MSB_to_S16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Sint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32MSB to AUDIO_S16LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Sint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Sint16 val = ((Sint16) (SDL_SwapFloatBE(*src) * 32767.0f));
|
|
|
- *dst = ((Sint16) SDL_SwapLE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32MSB_to_U16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Uint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32MSB to AUDIO_U16MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Uint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Uint16 val = ((Uint16) ((SDL_SwapFloatBE(*src) + 1.0f) * 32767.0f));
|
|
|
- *dst = SDL_SwapBE16(val);
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_U16MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32MSB_to_S16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Sint16 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32MSB to AUDIO_S16MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Sint16 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Sint16 val = ((Sint16) (SDL_SwapFloatBE(*src) * 32767.0f));
|
|
|
- *dst = ((Sint16) SDL_SwapBE16(val));
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt /= 2;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S16MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32MSB_to_S32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Sint32 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32MSB to AUDIO_S32LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Sint32 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Sint32 val = ((Sint32) (SDL_SwapFloatBE(*src) * 2147483647.0));
|
|
|
- *dst = ((Sint32) SDL_SwapLE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32MSB_to_S32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- Sint32 *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32MSB to AUDIO_S32MSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (Sint32 *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const Sint32 val = ((Sint32) (SDL_SwapFloatBE(*src) * 2147483647.0));
|
|
|
- *dst = ((Sint32) SDL_SwapBE32(val));
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_S32MSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Convert_F32MSB_to_F32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
- int i;
|
|
|
- const float *src;
|
|
|
- float *dst;
|
|
|
-
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Converting AUDIO_F32MSB to AUDIO_F32LSB.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- src = (const float *) cvt->buf;
|
|
|
- dst = (float *) cvt->buf;
|
|
|
- for (i = cvt->len_cvt / sizeof (float); i; --i, ++src, ++dst) {
|
|
|
- const float val = SDL_SwapFloatBE(*src);
|
|
|
- *dst = SDL_SwapFloatLE(val);
|
|
|
- }
|
|
|
-
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, AUDIO_F32LSB);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-#endif /* !NO_CONVERTERS */
|
|
|
-
|
|
|
-
|
|
|
-const SDL_AudioTypeFilters sdl_audio_type_filters[] =
|
|
|
-{
|
|
|
-#if !NO_CONVERTERS
|
|
|
- { AUDIO_U8, AUDIO_S8, SDL_Convert_U8_to_S8 },
|
|
|
- { AUDIO_U8, AUDIO_U16LSB, SDL_Convert_U8_to_U16LSB },
|
|
|
- { AUDIO_U8, AUDIO_S16LSB, SDL_Convert_U8_to_S16LSB },
|
|
|
- { AUDIO_U8, AUDIO_U16MSB, SDL_Convert_U8_to_U16MSB },
|
|
|
- { AUDIO_U8, AUDIO_S16MSB, SDL_Convert_U8_to_S16MSB },
|
|
|
- { AUDIO_U8, AUDIO_S32LSB, SDL_Convert_U8_to_S32LSB },
|
|
|
- { AUDIO_U8, AUDIO_S32MSB, SDL_Convert_U8_to_S32MSB },
|
|
|
- { AUDIO_U8, AUDIO_F32LSB, SDL_Convert_U8_to_F32LSB },
|
|
|
- { AUDIO_U8, AUDIO_F32MSB, SDL_Convert_U8_to_F32MSB },
|
|
|
- { AUDIO_S8, AUDIO_U8, SDL_Convert_S8_to_U8 },
|
|
|
- { AUDIO_S8, AUDIO_U16LSB, SDL_Convert_S8_to_U16LSB },
|
|
|
- { AUDIO_S8, AUDIO_S16LSB, SDL_Convert_S8_to_S16LSB },
|
|
|
- { AUDIO_S8, AUDIO_U16MSB, SDL_Convert_S8_to_U16MSB },
|
|
|
- { AUDIO_S8, AUDIO_S16MSB, SDL_Convert_S8_to_S16MSB },
|
|
|
- { AUDIO_S8, AUDIO_S32LSB, SDL_Convert_S8_to_S32LSB },
|
|
|
- { AUDIO_S8, AUDIO_S32MSB, SDL_Convert_S8_to_S32MSB },
|
|
|
- { AUDIO_S8, AUDIO_F32LSB, SDL_Convert_S8_to_F32LSB },
|
|
|
- { AUDIO_S8, AUDIO_F32MSB, SDL_Convert_S8_to_F32MSB },
|
|
|
- { AUDIO_U16LSB, AUDIO_U8, SDL_Convert_U16LSB_to_U8 },
|
|
|
- { AUDIO_U16LSB, AUDIO_S8, SDL_Convert_U16LSB_to_S8 },
|
|
|
- { AUDIO_U16LSB, AUDIO_S16LSB, SDL_Convert_U16LSB_to_S16LSB },
|
|
|
- { AUDIO_U16LSB, AUDIO_U16MSB, SDL_Convert_U16LSB_to_U16MSB },
|
|
|
- { AUDIO_U16LSB, AUDIO_S16MSB, SDL_Convert_U16LSB_to_S16MSB },
|
|
|
- { AUDIO_U16LSB, AUDIO_S32LSB, SDL_Convert_U16LSB_to_S32LSB },
|
|
|
- { AUDIO_U16LSB, AUDIO_S32MSB, SDL_Convert_U16LSB_to_S32MSB },
|
|
|
- { AUDIO_U16LSB, AUDIO_F32LSB, SDL_Convert_U16LSB_to_F32LSB },
|
|
|
- { AUDIO_U16LSB, AUDIO_F32MSB, SDL_Convert_U16LSB_to_F32MSB },
|
|
|
- { AUDIO_S16LSB, AUDIO_U8, SDL_Convert_S16LSB_to_U8 },
|
|
|
- { AUDIO_S16LSB, AUDIO_S8, SDL_Convert_S16LSB_to_S8 },
|
|
|
- { AUDIO_S16LSB, AUDIO_U16LSB, SDL_Convert_S16LSB_to_U16LSB },
|
|
|
- { AUDIO_S16LSB, AUDIO_U16MSB, SDL_Convert_S16LSB_to_U16MSB },
|
|
|
- { AUDIO_S16LSB, AUDIO_S16MSB, SDL_Convert_S16LSB_to_S16MSB },
|
|
|
- { AUDIO_S16LSB, AUDIO_S32LSB, SDL_Convert_S16LSB_to_S32LSB },
|
|
|
- { AUDIO_S16LSB, AUDIO_S32MSB, SDL_Convert_S16LSB_to_S32MSB },
|
|
|
- { AUDIO_S16LSB, AUDIO_F32LSB, SDL_Convert_S16LSB_to_F32LSB },
|
|
|
- { AUDIO_S16LSB, AUDIO_F32MSB, SDL_Convert_S16LSB_to_F32MSB },
|
|
|
- { AUDIO_U16MSB, AUDIO_U8, SDL_Convert_U16MSB_to_U8 },
|
|
|
- { AUDIO_U16MSB, AUDIO_S8, SDL_Convert_U16MSB_to_S8 },
|
|
|
- { AUDIO_U16MSB, AUDIO_U16LSB, SDL_Convert_U16MSB_to_U16LSB },
|
|
|
- { AUDIO_U16MSB, AUDIO_S16LSB, SDL_Convert_U16MSB_to_S16LSB },
|
|
|
- { AUDIO_U16MSB, AUDIO_S16MSB, SDL_Convert_U16MSB_to_S16MSB },
|
|
|
- { AUDIO_U16MSB, AUDIO_S32LSB, SDL_Convert_U16MSB_to_S32LSB },
|
|
|
- { AUDIO_U16MSB, AUDIO_S32MSB, SDL_Convert_U16MSB_to_S32MSB },
|
|
|
- { AUDIO_U16MSB, AUDIO_F32LSB, SDL_Convert_U16MSB_to_F32LSB },
|
|
|
- { AUDIO_U16MSB, AUDIO_F32MSB, SDL_Convert_U16MSB_to_F32MSB },
|
|
|
- { AUDIO_S16MSB, AUDIO_U8, SDL_Convert_S16MSB_to_U8 },
|
|
|
- { AUDIO_S16MSB, AUDIO_S8, SDL_Convert_S16MSB_to_S8 },
|
|
|
- { AUDIO_S16MSB, AUDIO_U16LSB, SDL_Convert_S16MSB_to_U16LSB },
|
|
|
- { AUDIO_S16MSB, AUDIO_S16LSB, SDL_Convert_S16MSB_to_S16LSB },
|
|
|
- { AUDIO_S16MSB, AUDIO_U16MSB, SDL_Convert_S16MSB_to_U16MSB },
|
|
|
- { AUDIO_S16MSB, AUDIO_S32LSB, SDL_Convert_S16MSB_to_S32LSB },
|
|
|
- { AUDIO_S16MSB, AUDIO_S32MSB, SDL_Convert_S16MSB_to_S32MSB },
|
|
|
- { AUDIO_S16MSB, AUDIO_F32LSB, SDL_Convert_S16MSB_to_F32LSB },
|
|
|
- { AUDIO_S16MSB, AUDIO_F32MSB, SDL_Convert_S16MSB_to_F32MSB },
|
|
|
- { AUDIO_S32LSB, AUDIO_U8, SDL_Convert_S32LSB_to_U8 },
|
|
|
- { AUDIO_S32LSB, AUDIO_S8, SDL_Convert_S32LSB_to_S8 },
|
|
|
- { AUDIO_S32LSB, AUDIO_U16LSB, SDL_Convert_S32LSB_to_U16LSB },
|
|
|
- { AUDIO_S32LSB, AUDIO_S16LSB, SDL_Convert_S32LSB_to_S16LSB },
|
|
|
- { AUDIO_S32LSB, AUDIO_U16MSB, SDL_Convert_S32LSB_to_U16MSB },
|
|
|
- { AUDIO_S32LSB, AUDIO_S16MSB, SDL_Convert_S32LSB_to_S16MSB },
|
|
|
- { AUDIO_S32LSB, AUDIO_S32MSB, SDL_Convert_S32LSB_to_S32MSB },
|
|
|
- { AUDIO_S32LSB, AUDIO_F32LSB, SDL_Convert_S32LSB_to_F32LSB },
|
|
|
- { AUDIO_S32LSB, AUDIO_F32MSB, SDL_Convert_S32LSB_to_F32MSB },
|
|
|
- { AUDIO_S32MSB, AUDIO_U8, SDL_Convert_S32MSB_to_U8 },
|
|
|
- { AUDIO_S32MSB, AUDIO_S8, SDL_Convert_S32MSB_to_S8 },
|
|
|
- { AUDIO_S32MSB, AUDIO_U16LSB, SDL_Convert_S32MSB_to_U16LSB },
|
|
|
- { AUDIO_S32MSB, AUDIO_S16LSB, SDL_Convert_S32MSB_to_S16LSB },
|
|
|
- { AUDIO_S32MSB, AUDIO_U16MSB, SDL_Convert_S32MSB_to_U16MSB },
|
|
|
- { AUDIO_S32MSB, AUDIO_S16MSB, SDL_Convert_S32MSB_to_S16MSB },
|
|
|
- { AUDIO_S32MSB, AUDIO_S32LSB, SDL_Convert_S32MSB_to_S32LSB },
|
|
|
- { AUDIO_S32MSB, AUDIO_F32LSB, SDL_Convert_S32MSB_to_F32LSB },
|
|
|
- { AUDIO_S32MSB, AUDIO_F32MSB, SDL_Convert_S32MSB_to_F32MSB },
|
|
|
- { AUDIO_F32LSB, AUDIO_U8, SDL_Convert_F32LSB_to_U8 },
|
|
|
- { AUDIO_F32LSB, AUDIO_S8, SDL_Convert_F32LSB_to_S8 },
|
|
|
- { AUDIO_F32LSB, AUDIO_U16LSB, SDL_Convert_F32LSB_to_U16LSB },
|
|
|
- { AUDIO_F32LSB, AUDIO_S16LSB, SDL_Convert_F32LSB_to_S16LSB },
|
|
|
- { AUDIO_F32LSB, AUDIO_U16MSB, SDL_Convert_F32LSB_to_U16MSB },
|
|
|
- { AUDIO_F32LSB, AUDIO_S16MSB, SDL_Convert_F32LSB_to_S16MSB },
|
|
|
- { AUDIO_F32LSB, AUDIO_S32LSB, SDL_Convert_F32LSB_to_S32LSB },
|
|
|
- { AUDIO_F32LSB, AUDIO_S32MSB, SDL_Convert_F32LSB_to_S32MSB },
|
|
|
- { AUDIO_F32LSB, AUDIO_F32MSB, SDL_Convert_F32LSB_to_F32MSB },
|
|
|
- { AUDIO_F32MSB, AUDIO_U8, SDL_Convert_F32MSB_to_U8 },
|
|
|
- { AUDIO_F32MSB, AUDIO_S8, SDL_Convert_F32MSB_to_S8 },
|
|
|
- { AUDIO_F32MSB, AUDIO_U16LSB, SDL_Convert_F32MSB_to_U16LSB },
|
|
|
- { AUDIO_F32MSB, AUDIO_S16LSB, SDL_Convert_F32MSB_to_S16LSB },
|
|
|
- { AUDIO_F32MSB, AUDIO_U16MSB, SDL_Convert_F32MSB_to_U16MSB },
|
|
|
- { AUDIO_F32MSB, AUDIO_S16MSB, SDL_Convert_F32MSB_to_S16MSB },
|
|
|
- { AUDIO_F32MSB, AUDIO_S32LSB, SDL_Convert_F32MSB_to_S32LSB },
|
|
|
- { AUDIO_F32MSB, AUDIO_S32MSB, SDL_Convert_F32MSB_to_S32MSB },
|
|
|
- { AUDIO_F32MSB, AUDIO_F32LSB, SDL_Convert_F32MSB_to_F32LSB },
|
|
|
-#endif /* !NO_CONVERTERS */
|
|
|
- { 0, 0, NULL }
|
|
|
-};
|
|
|
-
|
|
|
-
|
|
|
-#if !NO_RESAMPLERS
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U8, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 16;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/1)) * cvt->rate_incr) * 1;
|
|
|
- register int eps = 0;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 1;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Uint8 sample0 = src[0];
|
|
|
- Uint8 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[0] = sample0;
|
|
|
- dst--;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src--;
|
|
|
- sample0 = (Uint8) ((((Sint16) src[0]) + ((Sint16) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U8, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 16;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/1)) * cvt->rate_incr) * 1;
|
|
|
- register int eps = 0;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Uint8 sample0 = src[0];
|
|
|
- Uint8 last_sample0 = sample0;
|
|
|
- while (dst < target) {
|
|
|
- src++;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = sample0;
|
|
|
- dst++;
|
|
|
- sample0 = (Uint8) ((((Sint16) src[0]) + ((Sint16) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U8, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 32;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/2)) * cvt->rate_incr) * 2;
|
|
|
- register int eps = 0;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 2;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Uint8 sample1 = src[1];
|
|
|
- Uint8 sample0 = src[0];
|
|
|
- Uint8 last_sample1 = sample1;
|
|
|
- Uint8 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[1] = sample1;
|
|
|
- dst[0] = sample0;
|
|
|
- dst -= 2;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 2;
|
|
|
- sample1 = (Uint8) ((((Sint16) src[1]) + ((Sint16) last_sample1)) >> 1);
|
|
|
- sample0 = (Uint8) ((((Sint16) src[0]) + ((Sint16) last_sample0)) >> 1);
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U8, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 32;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/2)) * cvt->rate_incr) * 2;
|
|
|
- register int eps = 0;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Uint8 sample0 = src[0];
|
|
|
- Uint8 sample1 = src[1];
|
|
|
- Uint8 last_sample0 = sample0;
|
|
|
- Uint8 last_sample1 = sample1;
|
|
|
- while (dst < target) {
|
|
|
- src += 2;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = sample0;
|
|
|
- dst[1] = sample1;
|
|
|
- dst += 2;
|
|
|
- sample0 = (Uint8) ((((Sint16) src[0]) + ((Sint16) last_sample0)) >> 1);
|
|
|
- sample1 = (Uint8) ((((Sint16) src[1]) + ((Sint16) last_sample1)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U8, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 4;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Uint8 sample3 = src[3];
|
|
|
- Uint8 sample2 = src[2];
|
|
|
- Uint8 sample1 = src[1];
|
|
|
- Uint8 sample0 = src[0];
|
|
|
- Uint8 last_sample3 = sample3;
|
|
|
- Uint8 last_sample2 = sample2;
|
|
|
- Uint8 last_sample1 = sample1;
|
|
|
- Uint8 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[3] = sample3;
|
|
|
- dst[2] = sample2;
|
|
|
- dst[1] = sample1;
|
|
|
- dst[0] = sample0;
|
|
|
- dst -= 4;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 4;
|
|
|
- sample3 = (Uint8) ((((Sint16) src[3]) + ((Sint16) last_sample3)) >> 1);
|
|
|
- sample2 = (Uint8) ((((Sint16) src[2]) + ((Sint16) last_sample2)) >> 1);
|
|
|
- sample1 = (Uint8) ((((Sint16) src[1]) + ((Sint16) last_sample1)) >> 1);
|
|
|
- sample0 = (Uint8) ((((Sint16) src[0]) + ((Sint16) last_sample0)) >> 1);
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U8, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Uint8 sample0 = src[0];
|
|
|
- Uint8 sample1 = src[1];
|
|
|
- Uint8 sample2 = src[2];
|
|
|
- Uint8 sample3 = src[3];
|
|
|
- Uint8 last_sample0 = sample0;
|
|
|
- Uint8 last_sample1 = sample1;
|
|
|
- Uint8 last_sample2 = sample2;
|
|
|
- Uint8 last_sample3 = sample3;
|
|
|
- while (dst < target) {
|
|
|
- src += 4;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = sample0;
|
|
|
- dst[1] = sample1;
|
|
|
- dst[2] = sample2;
|
|
|
- dst[3] = sample3;
|
|
|
- dst += 4;
|
|
|
- sample0 = (Uint8) ((((Sint16) src[0]) + ((Sint16) last_sample0)) >> 1);
|
|
|
- sample1 = (Uint8) ((((Sint16) src[1]) + ((Sint16) last_sample1)) >> 1);
|
|
|
- sample2 = (Uint8) ((((Sint16) src[2]) + ((Sint16) last_sample2)) >> 1);
|
|
|
- sample3 = (Uint8) ((((Sint16) src[3]) + ((Sint16) last_sample3)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U8, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 96;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/6)) * cvt->rate_incr) * 6;
|
|
|
- register int eps = 0;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 6;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Uint8 sample5 = src[5];
|
|
|
- Uint8 sample4 = src[4];
|
|
|
- Uint8 sample3 = src[3];
|
|
|
- Uint8 sample2 = src[2];
|
|
|
- Uint8 sample1 = src[1];
|
|
|
- Uint8 sample0 = src[0];
|
|
|
- Uint8 last_sample5 = sample5;
|
|
|
- Uint8 last_sample4 = sample4;
|
|
|
- Uint8 last_sample3 = sample3;
|
|
|
- Uint8 last_sample2 = sample2;
|
|
|
- Uint8 last_sample1 = sample1;
|
|
|
- Uint8 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[5] = sample5;
|
|
|
- dst[4] = sample4;
|
|
|
- dst[3] = sample3;
|
|
|
- dst[2] = sample2;
|
|
|
- dst[1] = sample1;
|
|
|
- dst[0] = sample0;
|
|
|
- dst -= 6;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 6;
|
|
|
- sample5 = (Uint8) ((((Sint16) src[5]) + ((Sint16) last_sample5)) >> 1);
|
|
|
- sample4 = (Uint8) ((((Sint16) src[4]) + ((Sint16) last_sample4)) >> 1);
|
|
|
- sample3 = (Uint8) ((((Sint16) src[3]) + ((Sint16) last_sample3)) >> 1);
|
|
|
- sample2 = (Uint8) ((((Sint16) src[2]) + ((Sint16) last_sample2)) >> 1);
|
|
|
- sample1 = (Uint8) ((((Sint16) src[1]) + ((Sint16) last_sample1)) >> 1);
|
|
|
- sample0 = (Uint8) ((((Sint16) src[0]) + ((Sint16) last_sample0)) >> 1);
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U8, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 96;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/6)) * cvt->rate_incr) * 6;
|
|
|
- register int eps = 0;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Uint8 sample0 = src[0];
|
|
|
- Uint8 sample1 = src[1];
|
|
|
- Uint8 sample2 = src[2];
|
|
|
- Uint8 sample3 = src[3];
|
|
|
- Uint8 sample4 = src[4];
|
|
|
- Uint8 sample5 = src[5];
|
|
|
- Uint8 last_sample0 = sample0;
|
|
|
- Uint8 last_sample1 = sample1;
|
|
|
- Uint8 last_sample2 = sample2;
|
|
|
- Uint8 last_sample3 = sample3;
|
|
|
- Uint8 last_sample4 = sample4;
|
|
|
- Uint8 last_sample5 = sample5;
|
|
|
- while (dst < target) {
|
|
|
- src += 6;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = sample0;
|
|
|
- dst[1] = sample1;
|
|
|
- dst[2] = sample2;
|
|
|
- dst[3] = sample3;
|
|
|
- dst[4] = sample4;
|
|
|
- dst[5] = sample5;
|
|
|
- dst += 6;
|
|
|
- sample0 = (Uint8) ((((Sint16) src[0]) + ((Sint16) last_sample0)) >> 1);
|
|
|
- sample1 = (Uint8) ((((Sint16) src[1]) + ((Sint16) last_sample1)) >> 1);
|
|
|
- sample2 = (Uint8) ((((Sint16) src[2]) + ((Sint16) last_sample2)) >> 1);
|
|
|
- sample3 = (Uint8) ((((Sint16) src[3]) + ((Sint16) last_sample3)) >> 1);
|
|
|
- sample4 = (Uint8) ((((Sint16) src[4]) + ((Sint16) last_sample4)) >> 1);
|
|
|
- sample5 = (Uint8) ((((Sint16) src[5]) + ((Sint16) last_sample5)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U8, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 8;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Uint8 sample7 = src[7];
|
|
|
- Uint8 sample6 = src[6];
|
|
|
- Uint8 sample5 = src[5];
|
|
|
- Uint8 sample4 = src[4];
|
|
|
- Uint8 sample3 = src[3];
|
|
|
- Uint8 sample2 = src[2];
|
|
|
- Uint8 sample1 = src[1];
|
|
|
- Uint8 sample0 = src[0];
|
|
|
- Uint8 last_sample7 = sample7;
|
|
|
- Uint8 last_sample6 = sample6;
|
|
|
- Uint8 last_sample5 = sample5;
|
|
|
- Uint8 last_sample4 = sample4;
|
|
|
- Uint8 last_sample3 = sample3;
|
|
|
- Uint8 last_sample2 = sample2;
|
|
|
- Uint8 last_sample1 = sample1;
|
|
|
- Uint8 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[7] = sample7;
|
|
|
- dst[6] = sample6;
|
|
|
- dst[5] = sample5;
|
|
|
- dst[4] = sample4;
|
|
|
- dst[3] = sample3;
|
|
|
- dst[2] = sample2;
|
|
|
- dst[1] = sample1;
|
|
|
- dst[0] = sample0;
|
|
|
- dst -= 8;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 8;
|
|
|
- sample7 = (Uint8) ((((Sint16) src[7]) + ((Sint16) last_sample7)) >> 1);
|
|
|
- sample6 = (Uint8) ((((Sint16) src[6]) + ((Sint16) last_sample6)) >> 1);
|
|
|
- sample5 = (Uint8) ((((Sint16) src[5]) + ((Sint16) last_sample5)) >> 1);
|
|
|
- sample4 = (Uint8) ((((Sint16) src[4]) + ((Sint16) last_sample4)) >> 1);
|
|
|
- sample3 = (Uint8) ((((Sint16) src[3]) + ((Sint16) last_sample3)) >> 1);
|
|
|
- sample2 = (Uint8) ((((Sint16) src[2]) + ((Sint16) last_sample2)) >> 1);
|
|
|
- sample1 = (Uint8) ((((Sint16) src[1]) + ((Sint16) last_sample1)) >> 1);
|
|
|
- sample0 = (Uint8) ((((Sint16) src[0]) + ((Sint16) last_sample0)) >> 1);
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U8, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Uint8 sample0 = src[0];
|
|
|
- Uint8 sample1 = src[1];
|
|
|
- Uint8 sample2 = src[2];
|
|
|
- Uint8 sample3 = src[3];
|
|
|
- Uint8 sample4 = src[4];
|
|
|
- Uint8 sample5 = src[5];
|
|
|
- Uint8 sample6 = src[6];
|
|
|
- Uint8 sample7 = src[7];
|
|
|
- Uint8 last_sample0 = sample0;
|
|
|
- Uint8 last_sample1 = sample1;
|
|
|
- Uint8 last_sample2 = sample2;
|
|
|
- Uint8 last_sample3 = sample3;
|
|
|
- Uint8 last_sample4 = sample4;
|
|
|
- Uint8 last_sample5 = sample5;
|
|
|
- Uint8 last_sample6 = sample6;
|
|
|
- Uint8 last_sample7 = sample7;
|
|
|
- while (dst < target) {
|
|
|
- src += 8;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = sample0;
|
|
|
- dst[1] = sample1;
|
|
|
- dst[2] = sample2;
|
|
|
- dst[3] = sample3;
|
|
|
- dst[4] = sample4;
|
|
|
- dst[5] = sample5;
|
|
|
- dst[6] = sample6;
|
|
|
- dst[7] = sample7;
|
|
|
- dst += 8;
|
|
|
- sample0 = (Uint8) ((((Sint16) src[0]) + ((Sint16) last_sample0)) >> 1);
|
|
|
- sample1 = (Uint8) ((((Sint16) src[1]) + ((Sint16) last_sample1)) >> 1);
|
|
|
- sample2 = (Uint8) ((((Sint16) src[2]) + ((Sint16) last_sample2)) >> 1);
|
|
|
- sample3 = (Uint8) ((((Sint16) src[3]) + ((Sint16) last_sample3)) >> 1);
|
|
|
- sample4 = (Uint8) ((((Sint16) src[4]) + ((Sint16) last_sample4)) >> 1);
|
|
|
- sample5 = (Uint8) ((((Sint16) src[5]) + ((Sint16) last_sample5)) >> 1);
|
|
|
- sample6 = (Uint8) ((((Sint16) src[6]) + ((Sint16) last_sample6)) >> 1);
|
|
|
- sample7 = (Uint8) ((((Sint16) src[7]) + ((Sint16) last_sample7)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S8, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 16;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/1)) * cvt->rate_incr) * 1;
|
|
|
- register int eps = 0;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 1;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint8 sample0 = ((Sint8) src[0]);
|
|
|
- Sint8 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[0] = ((Sint8) sample0);
|
|
|
- dst--;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src--;
|
|
|
- sample0 = (Sint8) ((((Sint16) ((Sint8) src[0])) + ((Sint16) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S8, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 16;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/1)) * cvt->rate_incr) * 1;
|
|
|
- register int eps = 0;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint8 sample0 = ((Sint8) src[0]);
|
|
|
- Sint8 last_sample0 = sample0;
|
|
|
- while (dst < target) {
|
|
|
- src++;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint8) sample0);
|
|
|
- dst++;
|
|
|
- sample0 = (Sint8) ((((Sint16) ((Sint8) src[0])) + ((Sint16) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S8, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 32;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/2)) * cvt->rate_incr) * 2;
|
|
|
- register int eps = 0;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 2;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint8 sample1 = ((Sint8) src[1]);
|
|
|
- Sint8 sample0 = ((Sint8) src[0]);
|
|
|
- Sint8 last_sample1 = sample1;
|
|
|
- Sint8 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[1] = ((Sint8) sample1);
|
|
|
- dst[0] = ((Sint8) sample0);
|
|
|
- dst -= 2;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 2;
|
|
|
- sample1 = (Sint8) ((((Sint16) ((Sint8) src[1])) + ((Sint16) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint8) ((((Sint16) ((Sint8) src[0])) + ((Sint16) last_sample0)) >> 1);
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S8, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 32;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/2)) * cvt->rate_incr) * 2;
|
|
|
- register int eps = 0;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint8 sample0 = ((Sint8) src[0]);
|
|
|
- Sint8 sample1 = ((Sint8) src[1]);
|
|
|
- Sint8 last_sample0 = sample0;
|
|
|
- Sint8 last_sample1 = sample1;
|
|
|
- while (dst < target) {
|
|
|
- src += 2;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint8) sample0);
|
|
|
- dst[1] = ((Sint8) sample1);
|
|
|
- dst += 2;
|
|
|
- sample0 = (Sint8) ((((Sint16) ((Sint8) src[0])) + ((Sint16) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint8) ((((Sint16) ((Sint8) src[1])) + ((Sint16) last_sample1)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S8, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 4;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint8 sample3 = ((Sint8) src[3]);
|
|
|
- Sint8 sample2 = ((Sint8) src[2]);
|
|
|
- Sint8 sample1 = ((Sint8) src[1]);
|
|
|
- Sint8 sample0 = ((Sint8) src[0]);
|
|
|
- Sint8 last_sample3 = sample3;
|
|
|
- Sint8 last_sample2 = sample2;
|
|
|
- Sint8 last_sample1 = sample1;
|
|
|
- Sint8 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[3] = ((Sint8) sample3);
|
|
|
- dst[2] = ((Sint8) sample2);
|
|
|
- dst[1] = ((Sint8) sample1);
|
|
|
- dst[0] = ((Sint8) sample0);
|
|
|
- dst -= 4;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 4;
|
|
|
- sample3 = (Sint8) ((((Sint16) ((Sint8) src[3])) + ((Sint16) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint8) ((((Sint16) ((Sint8) src[2])) + ((Sint16) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint8) ((((Sint16) ((Sint8) src[1])) + ((Sint16) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint8) ((((Sint16) ((Sint8) src[0])) + ((Sint16) last_sample0)) >> 1);
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S8, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint8 sample0 = ((Sint8) src[0]);
|
|
|
- Sint8 sample1 = ((Sint8) src[1]);
|
|
|
- Sint8 sample2 = ((Sint8) src[2]);
|
|
|
- Sint8 sample3 = ((Sint8) src[3]);
|
|
|
- Sint8 last_sample0 = sample0;
|
|
|
- Sint8 last_sample1 = sample1;
|
|
|
- Sint8 last_sample2 = sample2;
|
|
|
- Sint8 last_sample3 = sample3;
|
|
|
- while (dst < target) {
|
|
|
- src += 4;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint8) sample0);
|
|
|
- dst[1] = ((Sint8) sample1);
|
|
|
- dst[2] = ((Sint8) sample2);
|
|
|
- dst[3] = ((Sint8) sample3);
|
|
|
- dst += 4;
|
|
|
- sample0 = (Sint8) ((((Sint16) ((Sint8) src[0])) + ((Sint16) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint8) ((((Sint16) ((Sint8) src[1])) + ((Sint16) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint8) ((((Sint16) ((Sint8) src[2])) + ((Sint16) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint8) ((((Sint16) ((Sint8) src[3])) + ((Sint16) last_sample3)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S8, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 96;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/6)) * cvt->rate_incr) * 6;
|
|
|
- register int eps = 0;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 6;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint8 sample5 = ((Sint8) src[5]);
|
|
|
- Sint8 sample4 = ((Sint8) src[4]);
|
|
|
- Sint8 sample3 = ((Sint8) src[3]);
|
|
|
- Sint8 sample2 = ((Sint8) src[2]);
|
|
|
- Sint8 sample1 = ((Sint8) src[1]);
|
|
|
- Sint8 sample0 = ((Sint8) src[0]);
|
|
|
- Sint8 last_sample5 = sample5;
|
|
|
- Sint8 last_sample4 = sample4;
|
|
|
- Sint8 last_sample3 = sample3;
|
|
|
- Sint8 last_sample2 = sample2;
|
|
|
- Sint8 last_sample1 = sample1;
|
|
|
- Sint8 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[5] = ((Sint8) sample5);
|
|
|
- dst[4] = ((Sint8) sample4);
|
|
|
- dst[3] = ((Sint8) sample3);
|
|
|
- dst[2] = ((Sint8) sample2);
|
|
|
- dst[1] = ((Sint8) sample1);
|
|
|
- dst[0] = ((Sint8) sample0);
|
|
|
- dst -= 6;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 6;
|
|
|
- sample5 = (Sint8) ((((Sint16) ((Sint8) src[5])) + ((Sint16) last_sample5)) >> 1);
|
|
|
- sample4 = (Sint8) ((((Sint16) ((Sint8) src[4])) + ((Sint16) last_sample4)) >> 1);
|
|
|
- sample3 = (Sint8) ((((Sint16) ((Sint8) src[3])) + ((Sint16) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint8) ((((Sint16) ((Sint8) src[2])) + ((Sint16) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint8) ((((Sint16) ((Sint8) src[1])) + ((Sint16) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint8) ((((Sint16) ((Sint8) src[0])) + ((Sint16) last_sample0)) >> 1);
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S8, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 96;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/6)) * cvt->rate_incr) * 6;
|
|
|
- register int eps = 0;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint8 sample0 = ((Sint8) src[0]);
|
|
|
- Sint8 sample1 = ((Sint8) src[1]);
|
|
|
- Sint8 sample2 = ((Sint8) src[2]);
|
|
|
- Sint8 sample3 = ((Sint8) src[3]);
|
|
|
- Sint8 sample4 = ((Sint8) src[4]);
|
|
|
- Sint8 sample5 = ((Sint8) src[5]);
|
|
|
- Sint8 last_sample0 = sample0;
|
|
|
- Sint8 last_sample1 = sample1;
|
|
|
- Sint8 last_sample2 = sample2;
|
|
|
- Sint8 last_sample3 = sample3;
|
|
|
- Sint8 last_sample4 = sample4;
|
|
|
- Sint8 last_sample5 = sample5;
|
|
|
- while (dst < target) {
|
|
|
- src += 6;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint8) sample0);
|
|
|
- dst[1] = ((Sint8) sample1);
|
|
|
- dst[2] = ((Sint8) sample2);
|
|
|
- dst[3] = ((Sint8) sample3);
|
|
|
- dst[4] = ((Sint8) sample4);
|
|
|
- dst[5] = ((Sint8) sample5);
|
|
|
- dst += 6;
|
|
|
- sample0 = (Sint8) ((((Sint16) ((Sint8) src[0])) + ((Sint16) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint8) ((((Sint16) ((Sint8) src[1])) + ((Sint16) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint8) ((((Sint16) ((Sint8) src[2])) + ((Sint16) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint8) ((((Sint16) ((Sint8) src[3])) + ((Sint16) last_sample3)) >> 1);
|
|
|
- sample4 = (Sint8) ((((Sint16) ((Sint8) src[4])) + ((Sint16) last_sample4)) >> 1);
|
|
|
- sample5 = (Sint8) ((((Sint16) ((Sint8) src[5])) + ((Sint16) last_sample5)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S8, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 8;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint8 sample7 = ((Sint8) src[7]);
|
|
|
- Sint8 sample6 = ((Sint8) src[6]);
|
|
|
- Sint8 sample5 = ((Sint8) src[5]);
|
|
|
- Sint8 sample4 = ((Sint8) src[4]);
|
|
|
- Sint8 sample3 = ((Sint8) src[3]);
|
|
|
- Sint8 sample2 = ((Sint8) src[2]);
|
|
|
- Sint8 sample1 = ((Sint8) src[1]);
|
|
|
- Sint8 sample0 = ((Sint8) src[0]);
|
|
|
- Sint8 last_sample7 = sample7;
|
|
|
- Sint8 last_sample6 = sample6;
|
|
|
- Sint8 last_sample5 = sample5;
|
|
|
- Sint8 last_sample4 = sample4;
|
|
|
- Sint8 last_sample3 = sample3;
|
|
|
- Sint8 last_sample2 = sample2;
|
|
|
- Sint8 last_sample1 = sample1;
|
|
|
- Sint8 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[7] = ((Sint8) sample7);
|
|
|
- dst[6] = ((Sint8) sample6);
|
|
|
- dst[5] = ((Sint8) sample5);
|
|
|
- dst[4] = ((Sint8) sample4);
|
|
|
- dst[3] = ((Sint8) sample3);
|
|
|
- dst[2] = ((Sint8) sample2);
|
|
|
- dst[1] = ((Sint8) sample1);
|
|
|
- dst[0] = ((Sint8) sample0);
|
|
|
- dst -= 8;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 8;
|
|
|
- sample7 = (Sint8) ((((Sint16) ((Sint8) src[7])) + ((Sint16) last_sample7)) >> 1);
|
|
|
- sample6 = (Sint8) ((((Sint16) ((Sint8) src[6])) + ((Sint16) last_sample6)) >> 1);
|
|
|
- sample5 = (Sint8) ((((Sint16) ((Sint8) src[5])) + ((Sint16) last_sample5)) >> 1);
|
|
|
- sample4 = (Sint8) ((((Sint16) ((Sint8) src[4])) + ((Sint16) last_sample4)) >> 1);
|
|
|
- sample3 = (Sint8) ((((Sint16) ((Sint8) src[3])) + ((Sint16) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint8) ((((Sint16) ((Sint8) src[2])) + ((Sint16) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint8) ((((Sint16) ((Sint8) src[1])) + ((Sint16) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint8) ((((Sint16) ((Sint8) src[0])) + ((Sint16) last_sample0)) >> 1);
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S8, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint8 sample0 = ((Sint8) src[0]);
|
|
|
- Sint8 sample1 = ((Sint8) src[1]);
|
|
|
- Sint8 sample2 = ((Sint8) src[2]);
|
|
|
- Sint8 sample3 = ((Sint8) src[3]);
|
|
|
- Sint8 sample4 = ((Sint8) src[4]);
|
|
|
- Sint8 sample5 = ((Sint8) src[5]);
|
|
|
- Sint8 sample6 = ((Sint8) src[6]);
|
|
|
- Sint8 sample7 = ((Sint8) src[7]);
|
|
|
- Sint8 last_sample0 = sample0;
|
|
|
- Sint8 last_sample1 = sample1;
|
|
|
- Sint8 last_sample2 = sample2;
|
|
|
- Sint8 last_sample3 = sample3;
|
|
|
- Sint8 last_sample4 = sample4;
|
|
|
- Sint8 last_sample5 = sample5;
|
|
|
- Sint8 last_sample6 = sample6;
|
|
|
- Sint8 last_sample7 = sample7;
|
|
|
- while (dst < target) {
|
|
|
- src += 8;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint8) sample0);
|
|
|
- dst[1] = ((Sint8) sample1);
|
|
|
- dst[2] = ((Sint8) sample2);
|
|
|
- dst[3] = ((Sint8) sample3);
|
|
|
- dst[4] = ((Sint8) sample4);
|
|
|
- dst[5] = ((Sint8) sample5);
|
|
|
- dst[6] = ((Sint8) sample6);
|
|
|
- dst[7] = ((Sint8) sample7);
|
|
|
- dst += 8;
|
|
|
- sample0 = (Sint8) ((((Sint16) ((Sint8) src[0])) + ((Sint16) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint8) ((((Sint16) ((Sint8) src[1])) + ((Sint16) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint8) ((((Sint16) ((Sint8) src[2])) + ((Sint16) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint8) ((((Sint16) ((Sint8) src[3])) + ((Sint16) last_sample3)) >> 1);
|
|
|
- sample4 = (Sint8) ((((Sint16) ((Sint8) src[4])) + ((Sint16) last_sample4)) >> 1);
|
|
|
- sample5 = (Sint8) ((((Sint16) ((Sint8) src[5])) + ((Sint16) last_sample5)) >> 1);
|
|
|
- sample6 = (Sint8) ((((Sint16) ((Sint8) src[6])) + ((Sint16) last_sample6)) >> 1);
|
|
|
- sample7 = (Sint8) ((((Sint16) ((Sint8) src[7])) + ((Sint16) last_sample7)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U16LSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 32;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/2)) * cvt->rate_incr) * 2;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 1;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Uint16 sample0 = SDL_SwapLE16(src[0]);
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[0] = SDL_SwapLE16(sample0);
|
|
|
- dst--;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src--;
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapLE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U16LSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 32;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/2)) * cvt->rate_incr) * 2;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Uint16 sample0 = SDL_SwapLE16(src[0]);
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- while (dst < target) {
|
|
|
- src++;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapLE16(sample0);
|
|
|
- dst++;
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapLE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U16LSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 2;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Uint16 sample1 = SDL_SwapLE16(src[1]);
|
|
|
- Uint16 sample0 = SDL_SwapLE16(src[0]);
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[1] = SDL_SwapLE16(sample1);
|
|
|
- dst[0] = SDL_SwapLE16(sample0);
|
|
|
- dst -= 2;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 2;
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapLE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapLE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U16LSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Uint16 sample0 = SDL_SwapLE16(src[0]);
|
|
|
- Uint16 sample1 = SDL_SwapLE16(src[1]);
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- while (dst < target) {
|
|
|
- src += 2;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapLE16(sample0);
|
|
|
- dst[1] = SDL_SwapLE16(sample1);
|
|
|
- dst += 2;
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapLE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapLE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U16LSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 4;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Uint16 sample3 = SDL_SwapLE16(src[3]);
|
|
|
- Uint16 sample2 = SDL_SwapLE16(src[2]);
|
|
|
- Uint16 sample1 = SDL_SwapLE16(src[1]);
|
|
|
- Uint16 sample0 = SDL_SwapLE16(src[0]);
|
|
|
- Uint16 last_sample3 = sample3;
|
|
|
- Uint16 last_sample2 = sample2;
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[3] = SDL_SwapLE16(sample3);
|
|
|
- dst[2] = SDL_SwapLE16(sample2);
|
|
|
- dst[1] = SDL_SwapLE16(sample1);
|
|
|
- dst[0] = SDL_SwapLE16(sample0);
|
|
|
- dst -= 4;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 4;
|
|
|
- sample3 = (Uint16) ((((Sint32) SDL_SwapLE16(src[3])) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample2 = (Uint16) ((((Sint32) SDL_SwapLE16(src[2])) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapLE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapLE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U16LSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Uint16 sample0 = SDL_SwapLE16(src[0]);
|
|
|
- Uint16 sample1 = SDL_SwapLE16(src[1]);
|
|
|
- Uint16 sample2 = SDL_SwapLE16(src[2]);
|
|
|
- Uint16 sample3 = SDL_SwapLE16(src[3]);
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- Uint16 last_sample2 = sample2;
|
|
|
- Uint16 last_sample3 = sample3;
|
|
|
- while (dst < target) {
|
|
|
- src += 4;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapLE16(sample0);
|
|
|
- dst[1] = SDL_SwapLE16(sample1);
|
|
|
- dst[2] = SDL_SwapLE16(sample2);
|
|
|
- dst[3] = SDL_SwapLE16(sample3);
|
|
|
- dst += 4;
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapLE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapLE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample2 = (Uint16) ((((Sint32) SDL_SwapLE16(src[2])) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample3 = (Uint16) ((((Sint32) SDL_SwapLE16(src[3])) + ((Sint32) last_sample3)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U16LSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 192;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/12)) * cvt->rate_incr) * 12;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 6;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Uint16 sample5 = SDL_SwapLE16(src[5]);
|
|
|
- Uint16 sample4 = SDL_SwapLE16(src[4]);
|
|
|
- Uint16 sample3 = SDL_SwapLE16(src[3]);
|
|
|
- Uint16 sample2 = SDL_SwapLE16(src[2]);
|
|
|
- Uint16 sample1 = SDL_SwapLE16(src[1]);
|
|
|
- Uint16 sample0 = SDL_SwapLE16(src[0]);
|
|
|
- Uint16 last_sample5 = sample5;
|
|
|
- Uint16 last_sample4 = sample4;
|
|
|
- Uint16 last_sample3 = sample3;
|
|
|
- Uint16 last_sample2 = sample2;
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[5] = SDL_SwapLE16(sample5);
|
|
|
- dst[4] = SDL_SwapLE16(sample4);
|
|
|
- dst[3] = SDL_SwapLE16(sample3);
|
|
|
- dst[2] = SDL_SwapLE16(sample2);
|
|
|
- dst[1] = SDL_SwapLE16(sample1);
|
|
|
- dst[0] = SDL_SwapLE16(sample0);
|
|
|
- dst -= 6;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 6;
|
|
|
- sample5 = (Uint16) ((((Sint32) SDL_SwapLE16(src[5])) + ((Sint32) last_sample5)) >> 1);
|
|
|
- sample4 = (Uint16) ((((Sint32) SDL_SwapLE16(src[4])) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample3 = (Uint16) ((((Sint32) SDL_SwapLE16(src[3])) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample2 = (Uint16) ((((Sint32) SDL_SwapLE16(src[2])) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapLE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapLE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U16LSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 192;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/12)) * cvt->rate_incr) * 12;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Uint16 sample0 = SDL_SwapLE16(src[0]);
|
|
|
- Uint16 sample1 = SDL_SwapLE16(src[1]);
|
|
|
- Uint16 sample2 = SDL_SwapLE16(src[2]);
|
|
|
- Uint16 sample3 = SDL_SwapLE16(src[3]);
|
|
|
- Uint16 sample4 = SDL_SwapLE16(src[4]);
|
|
|
- Uint16 sample5 = SDL_SwapLE16(src[5]);
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- Uint16 last_sample2 = sample2;
|
|
|
- Uint16 last_sample3 = sample3;
|
|
|
- Uint16 last_sample4 = sample4;
|
|
|
- Uint16 last_sample5 = sample5;
|
|
|
- while (dst < target) {
|
|
|
- src += 6;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapLE16(sample0);
|
|
|
- dst[1] = SDL_SwapLE16(sample1);
|
|
|
- dst[2] = SDL_SwapLE16(sample2);
|
|
|
- dst[3] = SDL_SwapLE16(sample3);
|
|
|
- dst[4] = SDL_SwapLE16(sample4);
|
|
|
- dst[5] = SDL_SwapLE16(sample5);
|
|
|
- dst += 6;
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapLE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapLE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample2 = (Uint16) ((((Sint32) SDL_SwapLE16(src[2])) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample3 = (Uint16) ((((Sint32) SDL_SwapLE16(src[3])) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample4 = (Uint16) ((((Sint32) SDL_SwapLE16(src[4])) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample5 = (Uint16) ((((Sint32) SDL_SwapLE16(src[5])) + ((Sint32) last_sample5)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U16LSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 8;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Uint16 sample7 = SDL_SwapLE16(src[7]);
|
|
|
- Uint16 sample6 = SDL_SwapLE16(src[6]);
|
|
|
- Uint16 sample5 = SDL_SwapLE16(src[5]);
|
|
|
- Uint16 sample4 = SDL_SwapLE16(src[4]);
|
|
|
- Uint16 sample3 = SDL_SwapLE16(src[3]);
|
|
|
- Uint16 sample2 = SDL_SwapLE16(src[2]);
|
|
|
- Uint16 sample1 = SDL_SwapLE16(src[1]);
|
|
|
- Uint16 sample0 = SDL_SwapLE16(src[0]);
|
|
|
- Uint16 last_sample7 = sample7;
|
|
|
- Uint16 last_sample6 = sample6;
|
|
|
- Uint16 last_sample5 = sample5;
|
|
|
- Uint16 last_sample4 = sample4;
|
|
|
- Uint16 last_sample3 = sample3;
|
|
|
- Uint16 last_sample2 = sample2;
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[7] = SDL_SwapLE16(sample7);
|
|
|
- dst[6] = SDL_SwapLE16(sample6);
|
|
|
- dst[5] = SDL_SwapLE16(sample5);
|
|
|
- dst[4] = SDL_SwapLE16(sample4);
|
|
|
- dst[3] = SDL_SwapLE16(sample3);
|
|
|
- dst[2] = SDL_SwapLE16(sample2);
|
|
|
- dst[1] = SDL_SwapLE16(sample1);
|
|
|
- dst[0] = SDL_SwapLE16(sample0);
|
|
|
- dst -= 8;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 8;
|
|
|
- sample7 = (Uint16) ((((Sint32) SDL_SwapLE16(src[7])) + ((Sint32) last_sample7)) >> 1);
|
|
|
- sample6 = (Uint16) ((((Sint32) SDL_SwapLE16(src[6])) + ((Sint32) last_sample6)) >> 1);
|
|
|
- sample5 = (Uint16) ((((Sint32) SDL_SwapLE16(src[5])) + ((Sint32) last_sample5)) >> 1);
|
|
|
- sample4 = (Uint16) ((((Sint32) SDL_SwapLE16(src[4])) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample3 = (Uint16) ((((Sint32) SDL_SwapLE16(src[3])) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample2 = (Uint16) ((((Sint32) SDL_SwapLE16(src[2])) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapLE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapLE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U16LSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Uint16 sample0 = SDL_SwapLE16(src[0]);
|
|
|
- Uint16 sample1 = SDL_SwapLE16(src[1]);
|
|
|
- Uint16 sample2 = SDL_SwapLE16(src[2]);
|
|
|
- Uint16 sample3 = SDL_SwapLE16(src[3]);
|
|
|
- Uint16 sample4 = SDL_SwapLE16(src[4]);
|
|
|
- Uint16 sample5 = SDL_SwapLE16(src[5]);
|
|
|
- Uint16 sample6 = SDL_SwapLE16(src[6]);
|
|
|
- Uint16 sample7 = SDL_SwapLE16(src[7]);
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- Uint16 last_sample2 = sample2;
|
|
|
- Uint16 last_sample3 = sample3;
|
|
|
- Uint16 last_sample4 = sample4;
|
|
|
- Uint16 last_sample5 = sample5;
|
|
|
- Uint16 last_sample6 = sample6;
|
|
|
- Uint16 last_sample7 = sample7;
|
|
|
- while (dst < target) {
|
|
|
- src += 8;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapLE16(sample0);
|
|
|
- dst[1] = SDL_SwapLE16(sample1);
|
|
|
- dst[2] = SDL_SwapLE16(sample2);
|
|
|
- dst[3] = SDL_SwapLE16(sample3);
|
|
|
- dst[4] = SDL_SwapLE16(sample4);
|
|
|
- dst[5] = SDL_SwapLE16(sample5);
|
|
|
- dst[6] = SDL_SwapLE16(sample6);
|
|
|
- dst[7] = SDL_SwapLE16(sample7);
|
|
|
- dst += 8;
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapLE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapLE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample2 = (Uint16) ((((Sint32) SDL_SwapLE16(src[2])) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample3 = (Uint16) ((((Sint32) SDL_SwapLE16(src[3])) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample4 = (Uint16) ((((Sint32) SDL_SwapLE16(src[4])) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample5 = (Uint16) ((((Sint32) SDL_SwapLE16(src[5])) + ((Sint32) last_sample5)) >> 1);
|
|
|
- sample6 = (Uint16) ((((Sint32) SDL_SwapLE16(src[6])) + ((Sint32) last_sample6)) >> 1);
|
|
|
- sample7 = (Uint16) ((((Sint32) SDL_SwapLE16(src[7])) + ((Sint32) last_sample7)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S16LSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 32;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/2)) * cvt->rate_incr) * 2;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 1;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[0] = ((Sint16) SDL_SwapLE16(sample0));
|
|
|
- dst--;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src--;
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S16LSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 32;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/2)) * cvt->rate_incr) * 2;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- while (dst < target) {
|
|
|
- src++;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint16) SDL_SwapLE16(sample0));
|
|
|
- dst++;
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S16LSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 2;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[1] = ((Sint16) SDL_SwapLE16(sample1));
|
|
|
- dst[0] = ((Sint16) SDL_SwapLE16(sample0));
|
|
|
- dst -= 2;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 2;
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S16LSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- while (dst < target) {
|
|
|
- src += 2;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint16) SDL_SwapLE16(sample0));
|
|
|
- dst[1] = ((Sint16) SDL_SwapLE16(sample1));
|
|
|
- dst += 2;
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S16LSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 4;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint16 sample3 = ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint16 sample2 = ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint16 last_sample3 = sample3;
|
|
|
- Sint16 last_sample2 = sample2;
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[3] = ((Sint16) SDL_SwapLE16(sample3));
|
|
|
- dst[2] = ((Sint16) SDL_SwapLE16(sample2));
|
|
|
- dst[1] = ((Sint16) SDL_SwapLE16(sample1));
|
|
|
- dst[0] = ((Sint16) SDL_SwapLE16(sample0));
|
|
|
- dst -= 4;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 4;
|
|
|
- sample3 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[3]))) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[2]))) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S16LSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint16 sample2 = ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint16 sample3 = ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- Sint16 last_sample2 = sample2;
|
|
|
- Sint16 last_sample3 = sample3;
|
|
|
- while (dst < target) {
|
|
|
- src += 4;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint16) SDL_SwapLE16(sample0));
|
|
|
- dst[1] = ((Sint16) SDL_SwapLE16(sample1));
|
|
|
- dst[2] = ((Sint16) SDL_SwapLE16(sample2));
|
|
|
- dst[3] = ((Sint16) SDL_SwapLE16(sample3));
|
|
|
- dst += 4;
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[2]))) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[3]))) + ((Sint32) last_sample3)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S16LSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 192;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/12)) * cvt->rate_incr) * 12;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 6;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint16 sample5 = ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- Sint16 sample4 = ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- Sint16 sample3 = ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint16 sample2 = ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint16 last_sample5 = sample5;
|
|
|
- Sint16 last_sample4 = sample4;
|
|
|
- Sint16 last_sample3 = sample3;
|
|
|
- Sint16 last_sample2 = sample2;
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[5] = ((Sint16) SDL_SwapLE16(sample5));
|
|
|
- dst[4] = ((Sint16) SDL_SwapLE16(sample4));
|
|
|
- dst[3] = ((Sint16) SDL_SwapLE16(sample3));
|
|
|
- dst[2] = ((Sint16) SDL_SwapLE16(sample2));
|
|
|
- dst[1] = ((Sint16) SDL_SwapLE16(sample1));
|
|
|
- dst[0] = ((Sint16) SDL_SwapLE16(sample0));
|
|
|
- dst -= 6;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 6;
|
|
|
- sample5 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[5]))) + ((Sint32) last_sample5)) >> 1);
|
|
|
- sample4 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[4]))) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample3 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[3]))) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[2]))) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S16LSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 192;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/12)) * cvt->rate_incr) * 12;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint16 sample2 = ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint16 sample3 = ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint16 sample4 = ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- Sint16 sample5 = ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- Sint16 last_sample2 = sample2;
|
|
|
- Sint16 last_sample3 = sample3;
|
|
|
- Sint16 last_sample4 = sample4;
|
|
|
- Sint16 last_sample5 = sample5;
|
|
|
- while (dst < target) {
|
|
|
- src += 6;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint16) SDL_SwapLE16(sample0));
|
|
|
- dst[1] = ((Sint16) SDL_SwapLE16(sample1));
|
|
|
- dst[2] = ((Sint16) SDL_SwapLE16(sample2));
|
|
|
- dst[3] = ((Sint16) SDL_SwapLE16(sample3));
|
|
|
- dst[4] = ((Sint16) SDL_SwapLE16(sample4));
|
|
|
- dst[5] = ((Sint16) SDL_SwapLE16(sample5));
|
|
|
- dst += 6;
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[2]))) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[3]))) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample4 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[4]))) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample5 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[5]))) + ((Sint32) last_sample5)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S16LSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 8;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint16 sample7 = ((Sint16) SDL_SwapLE16(src[7]));
|
|
|
- Sint16 sample6 = ((Sint16) SDL_SwapLE16(src[6]));
|
|
|
- Sint16 sample5 = ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- Sint16 sample4 = ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- Sint16 sample3 = ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint16 sample2 = ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint16 last_sample7 = sample7;
|
|
|
- Sint16 last_sample6 = sample6;
|
|
|
- Sint16 last_sample5 = sample5;
|
|
|
- Sint16 last_sample4 = sample4;
|
|
|
- Sint16 last_sample3 = sample3;
|
|
|
- Sint16 last_sample2 = sample2;
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[7] = ((Sint16) SDL_SwapLE16(sample7));
|
|
|
- dst[6] = ((Sint16) SDL_SwapLE16(sample6));
|
|
|
- dst[5] = ((Sint16) SDL_SwapLE16(sample5));
|
|
|
- dst[4] = ((Sint16) SDL_SwapLE16(sample4));
|
|
|
- dst[3] = ((Sint16) SDL_SwapLE16(sample3));
|
|
|
- dst[2] = ((Sint16) SDL_SwapLE16(sample2));
|
|
|
- dst[1] = ((Sint16) SDL_SwapLE16(sample1));
|
|
|
- dst[0] = ((Sint16) SDL_SwapLE16(sample0));
|
|
|
- dst -= 8;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 8;
|
|
|
- sample7 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[7]))) + ((Sint32) last_sample7)) >> 1);
|
|
|
- sample6 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[6]))) + ((Sint32) last_sample6)) >> 1);
|
|
|
- sample5 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[5]))) + ((Sint32) last_sample5)) >> 1);
|
|
|
- sample4 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[4]))) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample3 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[3]))) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[2]))) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S16LSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint16 sample2 = ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint16 sample3 = ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint16 sample4 = ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- Sint16 sample5 = ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- Sint16 sample6 = ((Sint16) SDL_SwapLE16(src[6]));
|
|
|
- Sint16 sample7 = ((Sint16) SDL_SwapLE16(src[7]));
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- Sint16 last_sample2 = sample2;
|
|
|
- Sint16 last_sample3 = sample3;
|
|
|
- Sint16 last_sample4 = sample4;
|
|
|
- Sint16 last_sample5 = sample5;
|
|
|
- Sint16 last_sample6 = sample6;
|
|
|
- Sint16 last_sample7 = sample7;
|
|
|
- while (dst < target) {
|
|
|
- src += 8;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint16) SDL_SwapLE16(sample0));
|
|
|
- dst[1] = ((Sint16) SDL_SwapLE16(sample1));
|
|
|
- dst[2] = ((Sint16) SDL_SwapLE16(sample2));
|
|
|
- dst[3] = ((Sint16) SDL_SwapLE16(sample3));
|
|
|
- dst[4] = ((Sint16) SDL_SwapLE16(sample4));
|
|
|
- dst[5] = ((Sint16) SDL_SwapLE16(sample5));
|
|
|
- dst[6] = ((Sint16) SDL_SwapLE16(sample6));
|
|
|
- dst[7] = ((Sint16) SDL_SwapLE16(sample7));
|
|
|
- dst += 8;
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[2]))) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[3]))) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample4 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[4]))) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample5 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[5]))) + ((Sint32) last_sample5)) >> 1);
|
|
|
- sample6 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[6]))) + ((Sint32) last_sample6)) >> 1);
|
|
|
- sample7 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapLE16(src[7]))) + ((Sint32) last_sample7)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U16MSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 32;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/2)) * cvt->rate_incr) * 2;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 1;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Uint16 sample0 = SDL_SwapBE16(src[0]);
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[0] = SDL_SwapBE16(sample0);
|
|
|
- dst--;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src--;
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapBE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U16MSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 32;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/2)) * cvt->rate_incr) * 2;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Uint16 sample0 = SDL_SwapBE16(src[0]);
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- while (dst < target) {
|
|
|
- src++;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapBE16(sample0);
|
|
|
- dst++;
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapBE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U16MSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 2;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Uint16 sample1 = SDL_SwapBE16(src[1]);
|
|
|
- Uint16 sample0 = SDL_SwapBE16(src[0]);
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[1] = SDL_SwapBE16(sample1);
|
|
|
- dst[0] = SDL_SwapBE16(sample0);
|
|
|
- dst -= 2;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 2;
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapBE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapBE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U16MSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Uint16 sample0 = SDL_SwapBE16(src[0]);
|
|
|
- Uint16 sample1 = SDL_SwapBE16(src[1]);
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- while (dst < target) {
|
|
|
- src += 2;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapBE16(sample0);
|
|
|
- dst[1] = SDL_SwapBE16(sample1);
|
|
|
- dst += 2;
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapBE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapBE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U16MSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 4;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Uint16 sample3 = SDL_SwapBE16(src[3]);
|
|
|
- Uint16 sample2 = SDL_SwapBE16(src[2]);
|
|
|
- Uint16 sample1 = SDL_SwapBE16(src[1]);
|
|
|
- Uint16 sample0 = SDL_SwapBE16(src[0]);
|
|
|
- Uint16 last_sample3 = sample3;
|
|
|
- Uint16 last_sample2 = sample2;
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[3] = SDL_SwapBE16(sample3);
|
|
|
- dst[2] = SDL_SwapBE16(sample2);
|
|
|
- dst[1] = SDL_SwapBE16(sample1);
|
|
|
- dst[0] = SDL_SwapBE16(sample0);
|
|
|
- dst -= 4;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 4;
|
|
|
- sample3 = (Uint16) ((((Sint32) SDL_SwapBE16(src[3])) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample2 = (Uint16) ((((Sint32) SDL_SwapBE16(src[2])) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapBE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapBE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U16MSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Uint16 sample0 = SDL_SwapBE16(src[0]);
|
|
|
- Uint16 sample1 = SDL_SwapBE16(src[1]);
|
|
|
- Uint16 sample2 = SDL_SwapBE16(src[2]);
|
|
|
- Uint16 sample3 = SDL_SwapBE16(src[3]);
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- Uint16 last_sample2 = sample2;
|
|
|
- Uint16 last_sample3 = sample3;
|
|
|
- while (dst < target) {
|
|
|
- src += 4;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapBE16(sample0);
|
|
|
- dst[1] = SDL_SwapBE16(sample1);
|
|
|
- dst[2] = SDL_SwapBE16(sample2);
|
|
|
- dst[3] = SDL_SwapBE16(sample3);
|
|
|
- dst += 4;
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapBE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapBE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample2 = (Uint16) ((((Sint32) SDL_SwapBE16(src[2])) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample3 = (Uint16) ((((Sint32) SDL_SwapBE16(src[3])) + ((Sint32) last_sample3)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U16MSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 192;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/12)) * cvt->rate_incr) * 12;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 6;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Uint16 sample5 = SDL_SwapBE16(src[5]);
|
|
|
- Uint16 sample4 = SDL_SwapBE16(src[4]);
|
|
|
- Uint16 sample3 = SDL_SwapBE16(src[3]);
|
|
|
- Uint16 sample2 = SDL_SwapBE16(src[2]);
|
|
|
- Uint16 sample1 = SDL_SwapBE16(src[1]);
|
|
|
- Uint16 sample0 = SDL_SwapBE16(src[0]);
|
|
|
- Uint16 last_sample5 = sample5;
|
|
|
- Uint16 last_sample4 = sample4;
|
|
|
- Uint16 last_sample3 = sample3;
|
|
|
- Uint16 last_sample2 = sample2;
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[5] = SDL_SwapBE16(sample5);
|
|
|
- dst[4] = SDL_SwapBE16(sample4);
|
|
|
- dst[3] = SDL_SwapBE16(sample3);
|
|
|
- dst[2] = SDL_SwapBE16(sample2);
|
|
|
- dst[1] = SDL_SwapBE16(sample1);
|
|
|
- dst[0] = SDL_SwapBE16(sample0);
|
|
|
- dst -= 6;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 6;
|
|
|
- sample5 = (Uint16) ((((Sint32) SDL_SwapBE16(src[5])) + ((Sint32) last_sample5)) >> 1);
|
|
|
- sample4 = (Uint16) ((((Sint32) SDL_SwapBE16(src[4])) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample3 = (Uint16) ((((Sint32) SDL_SwapBE16(src[3])) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample2 = (Uint16) ((((Sint32) SDL_SwapBE16(src[2])) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapBE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapBE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U16MSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 192;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/12)) * cvt->rate_incr) * 12;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Uint16 sample0 = SDL_SwapBE16(src[0]);
|
|
|
- Uint16 sample1 = SDL_SwapBE16(src[1]);
|
|
|
- Uint16 sample2 = SDL_SwapBE16(src[2]);
|
|
|
- Uint16 sample3 = SDL_SwapBE16(src[3]);
|
|
|
- Uint16 sample4 = SDL_SwapBE16(src[4]);
|
|
|
- Uint16 sample5 = SDL_SwapBE16(src[5]);
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- Uint16 last_sample2 = sample2;
|
|
|
- Uint16 last_sample3 = sample3;
|
|
|
- Uint16 last_sample4 = sample4;
|
|
|
- Uint16 last_sample5 = sample5;
|
|
|
- while (dst < target) {
|
|
|
- src += 6;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapBE16(sample0);
|
|
|
- dst[1] = SDL_SwapBE16(sample1);
|
|
|
- dst[2] = SDL_SwapBE16(sample2);
|
|
|
- dst[3] = SDL_SwapBE16(sample3);
|
|
|
- dst[4] = SDL_SwapBE16(sample4);
|
|
|
- dst[5] = SDL_SwapBE16(sample5);
|
|
|
- dst += 6;
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapBE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapBE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample2 = (Uint16) ((((Sint32) SDL_SwapBE16(src[2])) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample3 = (Uint16) ((((Sint32) SDL_SwapBE16(src[3])) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample4 = (Uint16) ((((Sint32) SDL_SwapBE16(src[4])) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample5 = (Uint16) ((((Sint32) SDL_SwapBE16(src[5])) + ((Sint32) last_sample5)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_U16MSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 8;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Uint16 sample7 = SDL_SwapBE16(src[7]);
|
|
|
- Uint16 sample6 = SDL_SwapBE16(src[6]);
|
|
|
- Uint16 sample5 = SDL_SwapBE16(src[5]);
|
|
|
- Uint16 sample4 = SDL_SwapBE16(src[4]);
|
|
|
- Uint16 sample3 = SDL_SwapBE16(src[3]);
|
|
|
- Uint16 sample2 = SDL_SwapBE16(src[2]);
|
|
|
- Uint16 sample1 = SDL_SwapBE16(src[1]);
|
|
|
- Uint16 sample0 = SDL_SwapBE16(src[0]);
|
|
|
- Uint16 last_sample7 = sample7;
|
|
|
- Uint16 last_sample6 = sample6;
|
|
|
- Uint16 last_sample5 = sample5;
|
|
|
- Uint16 last_sample4 = sample4;
|
|
|
- Uint16 last_sample3 = sample3;
|
|
|
- Uint16 last_sample2 = sample2;
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[7] = SDL_SwapBE16(sample7);
|
|
|
- dst[6] = SDL_SwapBE16(sample6);
|
|
|
- dst[5] = SDL_SwapBE16(sample5);
|
|
|
- dst[4] = SDL_SwapBE16(sample4);
|
|
|
- dst[3] = SDL_SwapBE16(sample3);
|
|
|
- dst[2] = SDL_SwapBE16(sample2);
|
|
|
- dst[1] = SDL_SwapBE16(sample1);
|
|
|
- dst[0] = SDL_SwapBE16(sample0);
|
|
|
- dst -= 8;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 8;
|
|
|
- sample7 = (Uint16) ((((Sint32) SDL_SwapBE16(src[7])) + ((Sint32) last_sample7)) >> 1);
|
|
|
- sample6 = (Uint16) ((((Sint32) SDL_SwapBE16(src[6])) + ((Sint32) last_sample6)) >> 1);
|
|
|
- sample5 = (Uint16) ((((Sint32) SDL_SwapBE16(src[5])) + ((Sint32) last_sample5)) >> 1);
|
|
|
- sample4 = (Uint16) ((((Sint32) SDL_SwapBE16(src[4])) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample3 = (Uint16) ((((Sint32) SDL_SwapBE16(src[3])) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample2 = (Uint16) ((((Sint32) SDL_SwapBE16(src[2])) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapBE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapBE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_U16MSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Uint16 sample0 = SDL_SwapBE16(src[0]);
|
|
|
- Uint16 sample1 = SDL_SwapBE16(src[1]);
|
|
|
- Uint16 sample2 = SDL_SwapBE16(src[2]);
|
|
|
- Uint16 sample3 = SDL_SwapBE16(src[3]);
|
|
|
- Uint16 sample4 = SDL_SwapBE16(src[4]);
|
|
|
- Uint16 sample5 = SDL_SwapBE16(src[5]);
|
|
|
- Uint16 sample6 = SDL_SwapBE16(src[6]);
|
|
|
- Uint16 sample7 = SDL_SwapBE16(src[7]);
|
|
|
- Uint16 last_sample0 = sample0;
|
|
|
- Uint16 last_sample1 = sample1;
|
|
|
- Uint16 last_sample2 = sample2;
|
|
|
- Uint16 last_sample3 = sample3;
|
|
|
- Uint16 last_sample4 = sample4;
|
|
|
- Uint16 last_sample5 = sample5;
|
|
|
- Uint16 last_sample6 = sample6;
|
|
|
- Uint16 last_sample7 = sample7;
|
|
|
- while (dst < target) {
|
|
|
- src += 8;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapBE16(sample0);
|
|
|
- dst[1] = SDL_SwapBE16(sample1);
|
|
|
- dst[2] = SDL_SwapBE16(sample2);
|
|
|
- dst[3] = SDL_SwapBE16(sample3);
|
|
|
- dst[4] = SDL_SwapBE16(sample4);
|
|
|
- dst[5] = SDL_SwapBE16(sample5);
|
|
|
- dst[6] = SDL_SwapBE16(sample6);
|
|
|
- dst[7] = SDL_SwapBE16(sample7);
|
|
|
- dst += 8;
|
|
|
- sample0 = (Uint16) ((((Sint32) SDL_SwapBE16(src[0])) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Uint16) ((((Sint32) SDL_SwapBE16(src[1])) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample2 = (Uint16) ((((Sint32) SDL_SwapBE16(src[2])) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample3 = (Uint16) ((((Sint32) SDL_SwapBE16(src[3])) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample4 = (Uint16) ((((Sint32) SDL_SwapBE16(src[4])) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample5 = (Uint16) ((((Sint32) SDL_SwapBE16(src[5])) + ((Sint32) last_sample5)) >> 1);
|
|
|
- sample6 = (Uint16) ((((Sint32) SDL_SwapBE16(src[6])) + ((Sint32) last_sample6)) >> 1);
|
|
|
- sample7 = (Uint16) ((((Sint32) SDL_SwapBE16(src[7])) + ((Sint32) last_sample7)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S16MSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 32;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/2)) * cvt->rate_incr) * 2;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 1;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[0] = ((Sint16) SDL_SwapBE16(sample0));
|
|
|
- dst--;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src--;
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S16MSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 32;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/2)) * cvt->rate_incr) * 2;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- while (dst < target) {
|
|
|
- src++;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint16) SDL_SwapBE16(sample0));
|
|
|
- dst++;
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S16MSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 2;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[1] = ((Sint16) SDL_SwapBE16(sample1));
|
|
|
- dst[0] = ((Sint16) SDL_SwapBE16(sample0));
|
|
|
- dst -= 2;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 2;
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S16MSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- while (dst < target) {
|
|
|
- src += 2;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint16) SDL_SwapBE16(sample0));
|
|
|
- dst[1] = ((Sint16) SDL_SwapBE16(sample1));
|
|
|
- dst += 2;
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S16MSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 4;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint16 sample3 = ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint16 sample2 = ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint16 last_sample3 = sample3;
|
|
|
- Sint16 last_sample2 = sample2;
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[3] = ((Sint16) SDL_SwapBE16(sample3));
|
|
|
- dst[2] = ((Sint16) SDL_SwapBE16(sample2));
|
|
|
- dst[1] = ((Sint16) SDL_SwapBE16(sample1));
|
|
|
- dst[0] = ((Sint16) SDL_SwapBE16(sample0));
|
|
|
- dst -= 4;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 4;
|
|
|
- sample3 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[3]))) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[2]))) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S16MSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint16 sample2 = ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint16 sample3 = ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- Sint16 last_sample2 = sample2;
|
|
|
- Sint16 last_sample3 = sample3;
|
|
|
- while (dst < target) {
|
|
|
- src += 4;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint16) SDL_SwapBE16(sample0));
|
|
|
- dst[1] = ((Sint16) SDL_SwapBE16(sample1));
|
|
|
- dst[2] = ((Sint16) SDL_SwapBE16(sample2));
|
|
|
- dst[3] = ((Sint16) SDL_SwapBE16(sample3));
|
|
|
- dst += 4;
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[2]))) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[3]))) + ((Sint32) last_sample3)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S16MSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 192;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/12)) * cvt->rate_incr) * 12;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 6;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint16 sample5 = ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- Sint16 sample4 = ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- Sint16 sample3 = ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint16 sample2 = ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint16 last_sample5 = sample5;
|
|
|
- Sint16 last_sample4 = sample4;
|
|
|
- Sint16 last_sample3 = sample3;
|
|
|
- Sint16 last_sample2 = sample2;
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[5] = ((Sint16) SDL_SwapBE16(sample5));
|
|
|
- dst[4] = ((Sint16) SDL_SwapBE16(sample4));
|
|
|
- dst[3] = ((Sint16) SDL_SwapBE16(sample3));
|
|
|
- dst[2] = ((Sint16) SDL_SwapBE16(sample2));
|
|
|
- dst[1] = ((Sint16) SDL_SwapBE16(sample1));
|
|
|
- dst[0] = ((Sint16) SDL_SwapBE16(sample0));
|
|
|
- dst -= 6;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 6;
|
|
|
- sample5 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[5]))) + ((Sint32) last_sample5)) >> 1);
|
|
|
- sample4 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[4]))) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample3 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[3]))) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[2]))) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S16MSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 192;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/12)) * cvt->rate_incr) * 12;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint16 sample2 = ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint16 sample3 = ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint16 sample4 = ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- Sint16 sample5 = ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- Sint16 last_sample2 = sample2;
|
|
|
- Sint16 last_sample3 = sample3;
|
|
|
- Sint16 last_sample4 = sample4;
|
|
|
- Sint16 last_sample5 = sample5;
|
|
|
- while (dst < target) {
|
|
|
- src += 6;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint16) SDL_SwapBE16(sample0));
|
|
|
- dst[1] = ((Sint16) SDL_SwapBE16(sample1));
|
|
|
- dst[2] = ((Sint16) SDL_SwapBE16(sample2));
|
|
|
- dst[3] = ((Sint16) SDL_SwapBE16(sample3));
|
|
|
- dst[4] = ((Sint16) SDL_SwapBE16(sample4));
|
|
|
- dst[5] = ((Sint16) SDL_SwapBE16(sample5));
|
|
|
- dst += 6;
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[2]))) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[3]))) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample4 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[4]))) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample5 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[5]))) + ((Sint32) last_sample5)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S16MSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 8;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint16 sample7 = ((Sint16) SDL_SwapBE16(src[7]));
|
|
|
- Sint16 sample6 = ((Sint16) SDL_SwapBE16(src[6]));
|
|
|
- Sint16 sample5 = ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- Sint16 sample4 = ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- Sint16 sample3 = ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint16 sample2 = ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint16 last_sample7 = sample7;
|
|
|
- Sint16 last_sample6 = sample6;
|
|
|
- Sint16 last_sample5 = sample5;
|
|
|
- Sint16 last_sample4 = sample4;
|
|
|
- Sint16 last_sample3 = sample3;
|
|
|
- Sint16 last_sample2 = sample2;
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[7] = ((Sint16) SDL_SwapBE16(sample7));
|
|
|
- dst[6] = ((Sint16) SDL_SwapBE16(sample6));
|
|
|
- dst[5] = ((Sint16) SDL_SwapBE16(sample5));
|
|
|
- dst[4] = ((Sint16) SDL_SwapBE16(sample4));
|
|
|
- dst[3] = ((Sint16) SDL_SwapBE16(sample3));
|
|
|
- dst[2] = ((Sint16) SDL_SwapBE16(sample2));
|
|
|
- dst[1] = ((Sint16) SDL_SwapBE16(sample1));
|
|
|
- dst[0] = ((Sint16) SDL_SwapBE16(sample0));
|
|
|
- dst -= 8;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 8;
|
|
|
- sample7 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[7]))) + ((Sint32) last_sample7)) >> 1);
|
|
|
- sample6 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[6]))) + ((Sint32) last_sample6)) >> 1);
|
|
|
- sample5 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[5]))) + ((Sint32) last_sample5)) >> 1);
|
|
|
- sample4 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[4]))) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample3 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[3]))) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[2]))) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S16MSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint16 sample0 = ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint16 sample1 = ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint16 sample2 = ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint16 sample3 = ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint16 sample4 = ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- Sint16 sample5 = ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- Sint16 sample6 = ((Sint16) SDL_SwapBE16(src[6]));
|
|
|
- Sint16 sample7 = ((Sint16) SDL_SwapBE16(src[7]));
|
|
|
- Sint16 last_sample0 = sample0;
|
|
|
- Sint16 last_sample1 = sample1;
|
|
|
- Sint16 last_sample2 = sample2;
|
|
|
- Sint16 last_sample3 = sample3;
|
|
|
- Sint16 last_sample4 = sample4;
|
|
|
- Sint16 last_sample5 = sample5;
|
|
|
- Sint16 last_sample6 = sample6;
|
|
|
- Sint16 last_sample7 = sample7;
|
|
|
- while (dst < target) {
|
|
|
- src += 8;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint16) SDL_SwapBE16(sample0));
|
|
|
- dst[1] = ((Sint16) SDL_SwapBE16(sample1));
|
|
|
- dst[2] = ((Sint16) SDL_SwapBE16(sample2));
|
|
|
- dst[3] = ((Sint16) SDL_SwapBE16(sample3));
|
|
|
- dst[4] = ((Sint16) SDL_SwapBE16(sample4));
|
|
|
- dst[5] = ((Sint16) SDL_SwapBE16(sample5));
|
|
|
- dst[6] = ((Sint16) SDL_SwapBE16(sample6));
|
|
|
- dst[7] = ((Sint16) SDL_SwapBE16(sample7));
|
|
|
- dst += 8;
|
|
|
- sample0 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[0]))) + ((Sint32) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[1]))) + ((Sint32) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[2]))) + ((Sint32) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[3]))) + ((Sint32) last_sample3)) >> 1);
|
|
|
- sample4 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[4]))) + ((Sint32) last_sample4)) >> 1);
|
|
|
- sample5 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[5]))) + ((Sint32) last_sample5)) >> 1);
|
|
|
- sample6 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[6]))) + ((Sint32) last_sample6)) >> 1);
|
|
|
- sample7 = (Sint16) ((((Sint32) ((Sint16) SDL_SwapBE16(src[7]))) + ((Sint32) last_sample7)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S32LSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 1;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[0] = ((Sint32) SDL_SwapLE32(sample0));
|
|
|
- dst--;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src--;
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S32LSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- while (dst < target) {
|
|
|
- src++;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint32) SDL_SwapLE32(sample0));
|
|
|
- dst++;
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S32LSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 2;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[1] = ((Sint32) SDL_SwapLE32(sample1));
|
|
|
- dst[0] = ((Sint32) SDL_SwapLE32(sample0));
|
|
|
- dst -= 2;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 2;
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S32LSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- while (dst < target) {
|
|
|
- src += 2;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint32) SDL_SwapLE32(sample0));
|
|
|
- dst[1] = ((Sint32) SDL_SwapLE32(sample1));
|
|
|
- dst += 2;
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S32LSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 4;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint32 sample3 = ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint32 sample2 = ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint32 last_sample3 = sample3;
|
|
|
- Sint32 last_sample2 = sample2;
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[3] = ((Sint32) SDL_SwapLE32(sample3));
|
|
|
- dst[2] = ((Sint32) SDL_SwapLE32(sample2));
|
|
|
- dst[1] = ((Sint32) SDL_SwapLE32(sample1));
|
|
|
- dst[0] = ((Sint32) SDL_SwapLE32(sample0));
|
|
|
- dst -= 4;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 4;
|
|
|
- sample3 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[3]))) + ((Sint64) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[2]))) + ((Sint64) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S32LSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint32 sample2 = ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint32 sample3 = ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- Sint32 last_sample2 = sample2;
|
|
|
- Sint32 last_sample3 = sample3;
|
|
|
- while (dst < target) {
|
|
|
- src += 4;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint32) SDL_SwapLE32(sample0));
|
|
|
- dst[1] = ((Sint32) SDL_SwapLE32(sample1));
|
|
|
- dst[2] = ((Sint32) SDL_SwapLE32(sample2));
|
|
|
- dst[3] = ((Sint32) SDL_SwapLE32(sample3));
|
|
|
- dst += 4;
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[2]))) + ((Sint64) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[3]))) + ((Sint64) last_sample3)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S32LSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 384;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/24)) * cvt->rate_incr) * 24;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 6;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint32 sample5 = ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- Sint32 sample4 = ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- Sint32 sample3 = ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint32 sample2 = ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint32 last_sample5 = sample5;
|
|
|
- Sint32 last_sample4 = sample4;
|
|
|
- Sint32 last_sample3 = sample3;
|
|
|
- Sint32 last_sample2 = sample2;
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[5] = ((Sint32) SDL_SwapLE32(sample5));
|
|
|
- dst[4] = ((Sint32) SDL_SwapLE32(sample4));
|
|
|
- dst[3] = ((Sint32) SDL_SwapLE32(sample3));
|
|
|
- dst[2] = ((Sint32) SDL_SwapLE32(sample2));
|
|
|
- dst[1] = ((Sint32) SDL_SwapLE32(sample1));
|
|
|
- dst[0] = ((Sint32) SDL_SwapLE32(sample0));
|
|
|
- dst -= 6;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 6;
|
|
|
- sample5 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[5]))) + ((Sint64) last_sample5)) >> 1);
|
|
|
- sample4 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[4]))) + ((Sint64) last_sample4)) >> 1);
|
|
|
- sample3 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[3]))) + ((Sint64) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[2]))) + ((Sint64) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S32LSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 384;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/24)) * cvt->rate_incr) * 24;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint32 sample2 = ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint32 sample3 = ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint32 sample4 = ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- Sint32 sample5 = ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- Sint32 last_sample2 = sample2;
|
|
|
- Sint32 last_sample3 = sample3;
|
|
|
- Sint32 last_sample4 = sample4;
|
|
|
- Sint32 last_sample5 = sample5;
|
|
|
- while (dst < target) {
|
|
|
- src += 6;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint32) SDL_SwapLE32(sample0));
|
|
|
- dst[1] = ((Sint32) SDL_SwapLE32(sample1));
|
|
|
- dst[2] = ((Sint32) SDL_SwapLE32(sample2));
|
|
|
- dst[3] = ((Sint32) SDL_SwapLE32(sample3));
|
|
|
- dst[4] = ((Sint32) SDL_SwapLE32(sample4));
|
|
|
- dst[5] = ((Sint32) SDL_SwapLE32(sample5));
|
|
|
- dst += 6;
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[2]))) + ((Sint64) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[3]))) + ((Sint64) last_sample3)) >> 1);
|
|
|
- sample4 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[4]))) + ((Sint64) last_sample4)) >> 1);
|
|
|
- sample5 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[5]))) + ((Sint64) last_sample5)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S32LSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 512;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/32)) * cvt->rate_incr) * 32;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 8;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint32 sample7 = ((Sint32) SDL_SwapLE32(src[7]));
|
|
|
- Sint32 sample6 = ((Sint32) SDL_SwapLE32(src[6]));
|
|
|
- Sint32 sample5 = ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- Sint32 sample4 = ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- Sint32 sample3 = ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint32 sample2 = ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint32 last_sample7 = sample7;
|
|
|
- Sint32 last_sample6 = sample6;
|
|
|
- Sint32 last_sample5 = sample5;
|
|
|
- Sint32 last_sample4 = sample4;
|
|
|
- Sint32 last_sample3 = sample3;
|
|
|
- Sint32 last_sample2 = sample2;
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[7] = ((Sint32) SDL_SwapLE32(sample7));
|
|
|
- dst[6] = ((Sint32) SDL_SwapLE32(sample6));
|
|
|
- dst[5] = ((Sint32) SDL_SwapLE32(sample5));
|
|
|
- dst[4] = ((Sint32) SDL_SwapLE32(sample4));
|
|
|
- dst[3] = ((Sint32) SDL_SwapLE32(sample3));
|
|
|
- dst[2] = ((Sint32) SDL_SwapLE32(sample2));
|
|
|
- dst[1] = ((Sint32) SDL_SwapLE32(sample1));
|
|
|
- dst[0] = ((Sint32) SDL_SwapLE32(sample0));
|
|
|
- dst -= 8;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 8;
|
|
|
- sample7 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[7]))) + ((Sint64) last_sample7)) >> 1);
|
|
|
- sample6 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[6]))) + ((Sint64) last_sample6)) >> 1);
|
|
|
- sample5 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[5]))) + ((Sint64) last_sample5)) >> 1);
|
|
|
- sample4 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[4]))) + ((Sint64) last_sample4)) >> 1);
|
|
|
- sample3 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[3]))) + ((Sint64) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[2]))) + ((Sint64) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S32LSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 512;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/32)) * cvt->rate_incr) * 32;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint32 sample2 = ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint32 sample3 = ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint32 sample4 = ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- Sint32 sample5 = ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- Sint32 sample6 = ((Sint32) SDL_SwapLE32(src[6]));
|
|
|
- Sint32 sample7 = ((Sint32) SDL_SwapLE32(src[7]));
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- Sint32 last_sample2 = sample2;
|
|
|
- Sint32 last_sample3 = sample3;
|
|
|
- Sint32 last_sample4 = sample4;
|
|
|
- Sint32 last_sample5 = sample5;
|
|
|
- Sint32 last_sample6 = sample6;
|
|
|
- Sint32 last_sample7 = sample7;
|
|
|
- while (dst < target) {
|
|
|
- src += 8;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint32) SDL_SwapLE32(sample0));
|
|
|
- dst[1] = ((Sint32) SDL_SwapLE32(sample1));
|
|
|
- dst[2] = ((Sint32) SDL_SwapLE32(sample2));
|
|
|
- dst[3] = ((Sint32) SDL_SwapLE32(sample3));
|
|
|
- dst[4] = ((Sint32) SDL_SwapLE32(sample4));
|
|
|
- dst[5] = ((Sint32) SDL_SwapLE32(sample5));
|
|
|
- dst[6] = ((Sint32) SDL_SwapLE32(sample6));
|
|
|
- dst[7] = ((Sint32) SDL_SwapLE32(sample7));
|
|
|
- dst += 8;
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[2]))) + ((Sint64) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[3]))) + ((Sint64) last_sample3)) >> 1);
|
|
|
- sample4 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[4]))) + ((Sint64) last_sample4)) >> 1);
|
|
|
- sample5 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[5]))) + ((Sint64) last_sample5)) >> 1);
|
|
|
- sample6 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[6]))) + ((Sint64) last_sample6)) >> 1);
|
|
|
- sample7 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapLE32(src[7]))) + ((Sint64) last_sample7)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S32MSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 1;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[0] = ((Sint32) SDL_SwapBE32(sample0));
|
|
|
- dst--;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src--;
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S32MSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- while (dst < target) {
|
|
|
- src++;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint32) SDL_SwapBE32(sample0));
|
|
|
- dst++;
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S32MSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 2;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[1] = ((Sint32) SDL_SwapBE32(sample1));
|
|
|
- dst[0] = ((Sint32) SDL_SwapBE32(sample0));
|
|
|
- dst -= 2;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 2;
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S32MSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- while (dst < target) {
|
|
|
- src += 2;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint32) SDL_SwapBE32(sample0));
|
|
|
- dst[1] = ((Sint32) SDL_SwapBE32(sample1));
|
|
|
- dst += 2;
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S32MSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 4;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint32 sample3 = ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint32 sample2 = ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint32 last_sample3 = sample3;
|
|
|
- Sint32 last_sample2 = sample2;
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[3] = ((Sint32) SDL_SwapBE32(sample3));
|
|
|
- dst[2] = ((Sint32) SDL_SwapBE32(sample2));
|
|
|
- dst[1] = ((Sint32) SDL_SwapBE32(sample1));
|
|
|
- dst[0] = ((Sint32) SDL_SwapBE32(sample0));
|
|
|
- dst -= 4;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 4;
|
|
|
- sample3 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[3]))) + ((Sint64) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[2]))) + ((Sint64) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S32MSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint32 sample2 = ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint32 sample3 = ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- Sint32 last_sample2 = sample2;
|
|
|
- Sint32 last_sample3 = sample3;
|
|
|
- while (dst < target) {
|
|
|
- src += 4;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint32) SDL_SwapBE32(sample0));
|
|
|
- dst[1] = ((Sint32) SDL_SwapBE32(sample1));
|
|
|
- dst[2] = ((Sint32) SDL_SwapBE32(sample2));
|
|
|
- dst[3] = ((Sint32) SDL_SwapBE32(sample3));
|
|
|
- dst += 4;
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[2]))) + ((Sint64) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[3]))) + ((Sint64) last_sample3)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S32MSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 384;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/24)) * cvt->rate_incr) * 24;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 6;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint32 sample5 = ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- Sint32 sample4 = ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- Sint32 sample3 = ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint32 sample2 = ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint32 last_sample5 = sample5;
|
|
|
- Sint32 last_sample4 = sample4;
|
|
|
- Sint32 last_sample3 = sample3;
|
|
|
- Sint32 last_sample2 = sample2;
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[5] = ((Sint32) SDL_SwapBE32(sample5));
|
|
|
- dst[4] = ((Sint32) SDL_SwapBE32(sample4));
|
|
|
- dst[3] = ((Sint32) SDL_SwapBE32(sample3));
|
|
|
- dst[2] = ((Sint32) SDL_SwapBE32(sample2));
|
|
|
- dst[1] = ((Sint32) SDL_SwapBE32(sample1));
|
|
|
- dst[0] = ((Sint32) SDL_SwapBE32(sample0));
|
|
|
- dst -= 6;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 6;
|
|
|
- sample5 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[5]))) + ((Sint64) last_sample5)) >> 1);
|
|
|
- sample4 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[4]))) + ((Sint64) last_sample4)) >> 1);
|
|
|
- sample3 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[3]))) + ((Sint64) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[2]))) + ((Sint64) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S32MSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 384;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/24)) * cvt->rate_incr) * 24;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint32 sample2 = ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint32 sample3 = ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint32 sample4 = ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- Sint32 sample5 = ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- Sint32 last_sample2 = sample2;
|
|
|
- Sint32 last_sample3 = sample3;
|
|
|
- Sint32 last_sample4 = sample4;
|
|
|
- Sint32 last_sample5 = sample5;
|
|
|
- while (dst < target) {
|
|
|
- src += 6;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint32) SDL_SwapBE32(sample0));
|
|
|
- dst[1] = ((Sint32) SDL_SwapBE32(sample1));
|
|
|
- dst[2] = ((Sint32) SDL_SwapBE32(sample2));
|
|
|
- dst[3] = ((Sint32) SDL_SwapBE32(sample3));
|
|
|
- dst[4] = ((Sint32) SDL_SwapBE32(sample4));
|
|
|
- dst[5] = ((Sint32) SDL_SwapBE32(sample5));
|
|
|
- dst += 6;
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[2]))) + ((Sint64) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[3]))) + ((Sint64) last_sample3)) >> 1);
|
|
|
- sample4 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[4]))) + ((Sint64) last_sample4)) >> 1);
|
|
|
- sample5 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[5]))) + ((Sint64) last_sample5)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_S32MSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 512;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/32)) * cvt->rate_incr) * 32;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 8;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint32 sample7 = ((Sint32) SDL_SwapBE32(src[7]));
|
|
|
- Sint32 sample6 = ((Sint32) SDL_SwapBE32(src[6]));
|
|
|
- Sint32 sample5 = ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- Sint32 sample4 = ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- Sint32 sample3 = ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint32 sample2 = ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint32 last_sample7 = sample7;
|
|
|
- Sint32 last_sample6 = sample6;
|
|
|
- Sint32 last_sample5 = sample5;
|
|
|
- Sint32 last_sample4 = sample4;
|
|
|
- Sint32 last_sample3 = sample3;
|
|
|
- Sint32 last_sample2 = sample2;
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[7] = ((Sint32) SDL_SwapBE32(sample7));
|
|
|
- dst[6] = ((Sint32) SDL_SwapBE32(sample6));
|
|
|
- dst[5] = ((Sint32) SDL_SwapBE32(sample5));
|
|
|
- dst[4] = ((Sint32) SDL_SwapBE32(sample4));
|
|
|
- dst[3] = ((Sint32) SDL_SwapBE32(sample3));
|
|
|
- dst[2] = ((Sint32) SDL_SwapBE32(sample2));
|
|
|
- dst[1] = ((Sint32) SDL_SwapBE32(sample1));
|
|
|
- dst[0] = ((Sint32) SDL_SwapBE32(sample0));
|
|
|
- dst -= 8;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 8;
|
|
|
- sample7 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[7]))) + ((Sint64) last_sample7)) >> 1);
|
|
|
- sample6 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[6]))) + ((Sint64) last_sample6)) >> 1);
|
|
|
- sample5 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[5]))) + ((Sint64) last_sample5)) >> 1);
|
|
|
- sample4 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[4]))) + ((Sint64) last_sample4)) >> 1);
|
|
|
- sample3 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[3]))) + ((Sint64) last_sample3)) >> 1);
|
|
|
- sample2 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[2]))) + ((Sint64) last_sample2)) >> 1);
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_S32MSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 512;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/32)) * cvt->rate_incr) * 32;
|
|
|
- register int eps = 0;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint32 sample0 = ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint32 sample1 = ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint32 sample2 = ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint32 sample3 = ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint32 sample4 = ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- Sint32 sample5 = ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- Sint32 sample6 = ((Sint32) SDL_SwapBE32(src[6]));
|
|
|
- Sint32 sample7 = ((Sint32) SDL_SwapBE32(src[7]));
|
|
|
- Sint32 last_sample0 = sample0;
|
|
|
- Sint32 last_sample1 = sample1;
|
|
|
- Sint32 last_sample2 = sample2;
|
|
|
- Sint32 last_sample3 = sample3;
|
|
|
- Sint32 last_sample4 = sample4;
|
|
|
- Sint32 last_sample5 = sample5;
|
|
|
- Sint32 last_sample6 = sample6;
|
|
|
- Sint32 last_sample7 = sample7;
|
|
|
- while (dst < target) {
|
|
|
- src += 8;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = ((Sint32) SDL_SwapBE32(sample0));
|
|
|
- dst[1] = ((Sint32) SDL_SwapBE32(sample1));
|
|
|
- dst[2] = ((Sint32) SDL_SwapBE32(sample2));
|
|
|
- dst[3] = ((Sint32) SDL_SwapBE32(sample3));
|
|
|
- dst[4] = ((Sint32) SDL_SwapBE32(sample4));
|
|
|
- dst[5] = ((Sint32) SDL_SwapBE32(sample5));
|
|
|
- dst[6] = ((Sint32) SDL_SwapBE32(sample6));
|
|
|
- dst[7] = ((Sint32) SDL_SwapBE32(sample7));
|
|
|
- dst += 8;
|
|
|
- sample0 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[0]))) + ((Sint64) last_sample0)) >> 1);
|
|
|
- sample1 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[1]))) + ((Sint64) last_sample1)) >> 1);
|
|
|
- sample2 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[2]))) + ((Sint64) last_sample2)) >> 1);
|
|
|
- sample3 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[3]))) + ((Sint64) last_sample3)) >> 1);
|
|
|
- sample4 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[4]))) + ((Sint64) last_sample4)) >> 1);
|
|
|
- sample5 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[5]))) + ((Sint64) last_sample5)) >> 1);
|
|
|
- sample6 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[6]))) + ((Sint64) last_sample6)) >> 1);
|
|
|
- sample7 = (Sint32) ((((Sint64) ((Sint32) SDL_SwapBE32(src[7]))) + ((Sint64) last_sample7)) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_F32LSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 1;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- float sample0 = SDL_SwapFloatLE(src[0]);
|
|
|
- float last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[0] = SDL_SwapFloatLE(sample0);
|
|
|
- dst--;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src--;
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatLE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_F32LSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- float sample0 = SDL_SwapFloatLE(src[0]);
|
|
|
- float last_sample0 = sample0;
|
|
|
- while (dst < target) {
|
|
|
- src++;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapFloatLE(sample0);
|
|
|
- dst++;
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatLE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_F32LSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 2;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- float sample1 = SDL_SwapFloatLE(src[1]);
|
|
|
- float sample0 = SDL_SwapFloatLE(src[0]);
|
|
|
- float last_sample1 = sample1;
|
|
|
- float last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[1] = SDL_SwapFloatLE(sample1);
|
|
|
- dst[0] = SDL_SwapFloatLE(sample0);
|
|
|
- dst -= 2;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 2;
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatLE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatLE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_F32LSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- float sample0 = SDL_SwapFloatLE(src[0]);
|
|
|
- float sample1 = SDL_SwapFloatLE(src[1]);
|
|
|
- float last_sample0 = sample0;
|
|
|
- float last_sample1 = sample1;
|
|
|
- while (dst < target) {
|
|
|
- src += 2;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapFloatLE(sample0);
|
|
|
- dst[1] = SDL_SwapFloatLE(sample1);
|
|
|
- dst += 2;
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatLE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatLE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_F32LSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 4;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- float sample3 = SDL_SwapFloatLE(src[3]);
|
|
|
- float sample2 = SDL_SwapFloatLE(src[2]);
|
|
|
- float sample1 = SDL_SwapFloatLE(src[1]);
|
|
|
- float sample0 = SDL_SwapFloatLE(src[0]);
|
|
|
- float last_sample3 = sample3;
|
|
|
- float last_sample2 = sample2;
|
|
|
- float last_sample1 = sample1;
|
|
|
- float last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[3] = SDL_SwapFloatLE(sample3);
|
|
|
- dst[2] = SDL_SwapFloatLE(sample2);
|
|
|
- dst[1] = SDL_SwapFloatLE(sample1);
|
|
|
- dst[0] = SDL_SwapFloatLE(sample0);
|
|
|
- dst -= 4;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 4;
|
|
|
- sample3 = (float) ((((double) SDL_SwapFloatLE(src[3])) + ((double) last_sample3)) * 0.5);
|
|
|
- sample2 = (float) ((((double) SDL_SwapFloatLE(src[2])) + ((double) last_sample2)) * 0.5);
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatLE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatLE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_F32LSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- float sample0 = SDL_SwapFloatLE(src[0]);
|
|
|
- float sample1 = SDL_SwapFloatLE(src[1]);
|
|
|
- float sample2 = SDL_SwapFloatLE(src[2]);
|
|
|
- float sample3 = SDL_SwapFloatLE(src[3]);
|
|
|
- float last_sample0 = sample0;
|
|
|
- float last_sample1 = sample1;
|
|
|
- float last_sample2 = sample2;
|
|
|
- float last_sample3 = sample3;
|
|
|
- while (dst < target) {
|
|
|
- src += 4;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapFloatLE(sample0);
|
|
|
- dst[1] = SDL_SwapFloatLE(sample1);
|
|
|
- dst[2] = SDL_SwapFloatLE(sample2);
|
|
|
- dst[3] = SDL_SwapFloatLE(sample3);
|
|
|
- dst += 4;
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatLE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatLE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- sample2 = (float) ((((double) SDL_SwapFloatLE(src[2])) + ((double) last_sample2)) * 0.5);
|
|
|
- sample3 = (float) ((((double) SDL_SwapFloatLE(src[3])) + ((double) last_sample3)) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_F32LSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 384;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/24)) * cvt->rate_incr) * 24;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 6;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- float sample5 = SDL_SwapFloatLE(src[5]);
|
|
|
- float sample4 = SDL_SwapFloatLE(src[4]);
|
|
|
- float sample3 = SDL_SwapFloatLE(src[3]);
|
|
|
- float sample2 = SDL_SwapFloatLE(src[2]);
|
|
|
- float sample1 = SDL_SwapFloatLE(src[1]);
|
|
|
- float sample0 = SDL_SwapFloatLE(src[0]);
|
|
|
- float last_sample5 = sample5;
|
|
|
- float last_sample4 = sample4;
|
|
|
- float last_sample3 = sample3;
|
|
|
- float last_sample2 = sample2;
|
|
|
- float last_sample1 = sample1;
|
|
|
- float last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[5] = SDL_SwapFloatLE(sample5);
|
|
|
- dst[4] = SDL_SwapFloatLE(sample4);
|
|
|
- dst[3] = SDL_SwapFloatLE(sample3);
|
|
|
- dst[2] = SDL_SwapFloatLE(sample2);
|
|
|
- dst[1] = SDL_SwapFloatLE(sample1);
|
|
|
- dst[0] = SDL_SwapFloatLE(sample0);
|
|
|
- dst -= 6;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 6;
|
|
|
- sample5 = (float) ((((double) SDL_SwapFloatLE(src[5])) + ((double) last_sample5)) * 0.5);
|
|
|
- sample4 = (float) ((((double) SDL_SwapFloatLE(src[4])) + ((double) last_sample4)) * 0.5);
|
|
|
- sample3 = (float) ((((double) SDL_SwapFloatLE(src[3])) + ((double) last_sample3)) * 0.5);
|
|
|
- sample2 = (float) ((((double) SDL_SwapFloatLE(src[2])) + ((double) last_sample2)) * 0.5);
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatLE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatLE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_F32LSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 384;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/24)) * cvt->rate_incr) * 24;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- float sample0 = SDL_SwapFloatLE(src[0]);
|
|
|
- float sample1 = SDL_SwapFloatLE(src[1]);
|
|
|
- float sample2 = SDL_SwapFloatLE(src[2]);
|
|
|
- float sample3 = SDL_SwapFloatLE(src[3]);
|
|
|
- float sample4 = SDL_SwapFloatLE(src[4]);
|
|
|
- float sample5 = SDL_SwapFloatLE(src[5]);
|
|
|
- float last_sample0 = sample0;
|
|
|
- float last_sample1 = sample1;
|
|
|
- float last_sample2 = sample2;
|
|
|
- float last_sample3 = sample3;
|
|
|
- float last_sample4 = sample4;
|
|
|
- float last_sample5 = sample5;
|
|
|
- while (dst < target) {
|
|
|
- src += 6;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapFloatLE(sample0);
|
|
|
- dst[1] = SDL_SwapFloatLE(sample1);
|
|
|
- dst[2] = SDL_SwapFloatLE(sample2);
|
|
|
- dst[3] = SDL_SwapFloatLE(sample3);
|
|
|
- dst[4] = SDL_SwapFloatLE(sample4);
|
|
|
- dst[5] = SDL_SwapFloatLE(sample5);
|
|
|
- dst += 6;
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatLE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatLE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- sample2 = (float) ((((double) SDL_SwapFloatLE(src[2])) + ((double) last_sample2)) * 0.5);
|
|
|
- sample3 = (float) ((((double) SDL_SwapFloatLE(src[3])) + ((double) last_sample3)) * 0.5);
|
|
|
- sample4 = (float) ((((double) SDL_SwapFloatLE(src[4])) + ((double) last_sample4)) * 0.5);
|
|
|
- sample5 = (float) ((((double) SDL_SwapFloatLE(src[5])) + ((double) last_sample5)) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_F32LSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 512;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/32)) * cvt->rate_incr) * 32;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 8;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- float sample7 = SDL_SwapFloatLE(src[7]);
|
|
|
- float sample6 = SDL_SwapFloatLE(src[6]);
|
|
|
- float sample5 = SDL_SwapFloatLE(src[5]);
|
|
|
- float sample4 = SDL_SwapFloatLE(src[4]);
|
|
|
- float sample3 = SDL_SwapFloatLE(src[3]);
|
|
|
- float sample2 = SDL_SwapFloatLE(src[2]);
|
|
|
- float sample1 = SDL_SwapFloatLE(src[1]);
|
|
|
- float sample0 = SDL_SwapFloatLE(src[0]);
|
|
|
- float last_sample7 = sample7;
|
|
|
- float last_sample6 = sample6;
|
|
|
- float last_sample5 = sample5;
|
|
|
- float last_sample4 = sample4;
|
|
|
- float last_sample3 = sample3;
|
|
|
- float last_sample2 = sample2;
|
|
|
- float last_sample1 = sample1;
|
|
|
- float last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[7] = SDL_SwapFloatLE(sample7);
|
|
|
- dst[6] = SDL_SwapFloatLE(sample6);
|
|
|
- dst[5] = SDL_SwapFloatLE(sample5);
|
|
|
- dst[4] = SDL_SwapFloatLE(sample4);
|
|
|
- dst[3] = SDL_SwapFloatLE(sample3);
|
|
|
- dst[2] = SDL_SwapFloatLE(sample2);
|
|
|
- dst[1] = SDL_SwapFloatLE(sample1);
|
|
|
- dst[0] = SDL_SwapFloatLE(sample0);
|
|
|
- dst -= 8;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 8;
|
|
|
- sample7 = (float) ((((double) SDL_SwapFloatLE(src[7])) + ((double) last_sample7)) * 0.5);
|
|
|
- sample6 = (float) ((((double) SDL_SwapFloatLE(src[6])) + ((double) last_sample6)) * 0.5);
|
|
|
- sample5 = (float) ((((double) SDL_SwapFloatLE(src[5])) + ((double) last_sample5)) * 0.5);
|
|
|
- sample4 = (float) ((((double) SDL_SwapFloatLE(src[4])) + ((double) last_sample4)) * 0.5);
|
|
|
- sample3 = (float) ((((double) SDL_SwapFloatLE(src[3])) + ((double) last_sample3)) * 0.5);
|
|
|
- sample2 = (float) ((((double) SDL_SwapFloatLE(src[2])) + ((double) last_sample2)) * 0.5);
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatLE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatLE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_F32LSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 512;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/32)) * cvt->rate_incr) * 32;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- float sample0 = SDL_SwapFloatLE(src[0]);
|
|
|
- float sample1 = SDL_SwapFloatLE(src[1]);
|
|
|
- float sample2 = SDL_SwapFloatLE(src[2]);
|
|
|
- float sample3 = SDL_SwapFloatLE(src[3]);
|
|
|
- float sample4 = SDL_SwapFloatLE(src[4]);
|
|
|
- float sample5 = SDL_SwapFloatLE(src[5]);
|
|
|
- float sample6 = SDL_SwapFloatLE(src[6]);
|
|
|
- float sample7 = SDL_SwapFloatLE(src[7]);
|
|
|
- float last_sample0 = sample0;
|
|
|
- float last_sample1 = sample1;
|
|
|
- float last_sample2 = sample2;
|
|
|
- float last_sample3 = sample3;
|
|
|
- float last_sample4 = sample4;
|
|
|
- float last_sample5 = sample5;
|
|
|
- float last_sample6 = sample6;
|
|
|
- float last_sample7 = sample7;
|
|
|
- while (dst < target) {
|
|
|
- src += 8;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapFloatLE(sample0);
|
|
|
- dst[1] = SDL_SwapFloatLE(sample1);
|
|
|
- dst[2] = SDL_SwapFloatLE(sample2);
|
|
|
- dst[3] = SDL_SwapFloatLE(sample3);
|
|
|
- dst[4] = SDL_SwapFloatLE(sample4);
|
|
|
- dst[5] = SDL_SwapFloatLE(sample5);
|
|
|
- dst[6] = SDL_SwapFloatLE(sample6);
|
|
|
- dst[7] = SDL_SwapFloatLE(sample7);
|
|
|
- dst += 8;
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatLE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatLE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- sample2 = (float) ((((double) SDL_SwapFloatLE(src[2])) + ((double) last_sample2)) * 0.5);
|
|
|
- sample3 = (float) ((((double) SDL_SwapFloatLE(src[3])) + ((double) last_sample3)) * 0.5);
|
|
|
- sample4 = (float) ((((double) SDL_SwapFloatLE(src[4])) + ((double) last_sample4)) * 0.5);
|
|
|
- sample5 = (float) ((((double) SDL_SwapFloatLE(src[5])) + ((double) last_sample5)) * 0.5);
|
|
|
- sample6 = (float) ((((double) SDL_SwapFloatLE(src[6])) + ((double) last_sample6)) * 0.5);
|
|
|
- sample7 = (float) ((((double) SDL_SwapFloatLE(src[7])) + ((double) last_sample7)) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_F32MSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 1;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- float sample0 = SDL_SwapFloatBE(src[0]);
|
|
|
- float last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[0] = SDL_SwapFloatBE(sample0);
|
|
|
- dst--;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src--;
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatBE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_1c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_F32MSB, 1 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 64;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/4)) * cvt->rate_incr) * 4;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- float sample0 = SDL_SwapFloatBE(src[0]);
|
|
|
- float last_sample0 = sample0;
|
|
|
- while (dst < target) {
|
|
|
- src++;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapFloatBE(sample0);
|
|
|
- dst++;
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatBE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_F32MSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 2;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- float sample1 = SDL_SwapFloatBE(src[1]);
|
|
|
- float sample0 = SDL_SwapFloatBE(src[0]);
|
|
|
- float last_sample1 = sample1;
|
|
|
- float last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[1] = SDL_SwapFloatBE(sample1);
|
|
|
- dst[0] = SDL_SwapFloatBE(sample0);
|
|
|
- dst -= 2;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 2;
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatBE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatBE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_2c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_F32MSB, 2 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 128;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/8)) * cvt->rate_incr) * 8;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- float sample0 = SDL_SwapFloatBE(src[0]);
|
|
|
- float sample1 = SDL_SwapFloatBE(src[1]);
|
|
|
- float last_sample0 = sample0;
|
|
|
- float last_sample1 = sample1;
|
|
|
- while (dst < target) {
|
|
|
- src += 2;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapFloatBE(sample0);
|
|
|
- dst[1] = SDL_SwapFloatBE(sample1);
|
|
|
- dst += 2;
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatBE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatBE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_F32MSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 4;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- float sample3 = SDL_SwapFloatBE(src[3]);
|
|
|
- float sample2 = SDL_SwapFloatBE(src[2]);
|
|
|
- float sample1 = SDL_SwapFloatBE(src[1]);
|
|
|
- float sample0 = SDL_SwapFloatBE(src[0]);
|
|
|
- float last_sample3 = sample3;
|
|
|
- float last_sample2 = sample2;
|
|
|
- float last_sample1 = sample1;
|
|
|
- float last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[3] = SDL_SwapFloatBE(sample3);
|
|
|
- dst[2] = SDL_SwapFloatBE(sample2);
|
|
|
- dst[1] = SDL_SwapFloatBE(sample1);
|
|
|
- dst[0] = SDL_SwapFloatBE(sample0);
|
|
|
- dst -= 4;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 4;
|
|
|
- sample3 = (float) ((((double) SDL_SwapFloatBE(src[3])) + ((double) last_sample3)) * 0.5);
|
|
|
- sample2 = (float) ((((double) SDL_SwapFloatBE(src[2])) + ((double) last_sample2)) * 0.5);
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatBE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatBE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_4c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_F32MSB, 4 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 256;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/16)) * cvt->rate_incr) * 16;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- float sample0 = SDL_SwapFloatBE(src[0]);
|
|
|
- float sample1 = SDL_SwapFloatBE(src[1]);
|
|
|
- float sample2 = SDL_SwapFloatBE(src[2]);
|
|
|
- float sample3 = SDL_SwapFloatBE(src[3]);
|
|
|
- float last_sample0 = sample0;
|
|
|
- float last_sample1 = sample1;
|
|
|
- float last_sample2 = sample2;
|
|
|
- float last_sample3 = sample3;
|
|
|
- while (dst < target) {
|
|
|
- src += 4;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapFloatBE(sample0);
|
|
|
- dst[1] = SDL_SwapFloatBE(sample1);
|
|
|
- dst[2] = SDL_SwapFloatBE(sample2);
|
|
|
- dst[3] = SDL_SwapFloatBE(sample3);
|
|
|
- dst += 4;
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatBE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatBE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- sample2 = (float) ((((double) SDL_SwapFloatBE(src[2])) + ((double) last_sample2)) * 0.5);
|
|
|
- sample3 = (float) ((((double) SDL_SwapFloatBE(src[3])) + ((double) last_sample3)) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_F32MSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 384;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/24)) * cvt->rate_incr) * 24;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 6;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- float sample5 = SDL_SwapFloatBE(src[5]);
|
|
|
- float sample4 = SDL_SwapFloatBE(src[4]);
|
|
|
- float sample3 = SDL_SwapFloatBE(src[3]);
|
|
|
- float sample2 = SDL_SwapFloatBE(src[2]);
|
|
|
- float sample1 = SDL_SwapFloatBE(src[1]);
|
|
|
- float sample0 = SDL_SwapFloatBE(src[0]);
|
|
|
- float last_sample5 = sample5;
|
|
|
- float last_sample4 = sample4;
|
|
|
- float last_sample3 = sample3;
|
|
|
- float last_sample2 = sample2;
|
|
|
- float last_sample1 = sample1;
|
|
|
- float last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[5] = SDL_SwapFloatBE(sample5);
|
|
|
- dst[4] = SDL_SwapFloatBE(sample4);
|
|
|
- dst[3] = SDL_SwapFloatBE(sample3);
|
|
|
- dst[2] = SDL_SwapFloatBE(sample2);
|
|
|
- dst[1] = SDL_SwapFloatBE(sample1);
|
|
|
- dst[0] = SDL_SwapFloatBE(sample0);
|
|
|
- dst -= 6;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 6;
|
|
|
- sample5 = (float) ((((double) SDL_SwapFloatBE(src[5])) + ((double) last_sample5)) * 0.5);
|
|
|
- sample4 = (float) ((((double) SDL_SwapFloatBE(src[4])) + ((double) last_sample4)) * 0.5);
|
|
|
- sample3 = (float) ((((double) SDL_SwapFloatBE(src[3])) + ((double) last_sample3)) * 0.5);
|
|
|
- sample2 = (float) ((((double) SDL_SwapFloatBE(src[2])) + ((double) last_sample2)) * 0.5);
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatBE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatBE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_6c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_F32MSB, 6 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 384;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/24)) * cvt->rate_incr) * 24;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- float sample0 = SDL_SwapFloatBE(src[0]);
|
|
|
- float sample1 = SDL_SwapFloatBE(src[1]);
|
|
|
- float sample2 = SDL_SwapFloatBE(src[2]);
|
|
|
- float sample3 = SDL_SwapFloatBE(src[3]);
|
|
|
- float sample4 = SDL_SwapFloatBE(src[4]);
|
|
|
- float sample5 = SDL_SwapFloatBE(src[5]);
|
|
|
- float last_sample0 = sample0;
|
|
|
- float last_sample1 = sample1;
|
|
|
- float last_sample2 = sample2;
|
|
|
- float last_sample3 = sample3;
|
|
|
- float last_sample4 = sample4;
|
|
|
- float last_sample5 = sample5;
|
|
|
- while (dst < target) {
|
|
|
- src += 6;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapFloatBE(sample0);
|
|
|
- dst[1] = SDL_SwapFloatBE(sample1);
|
|
|
- dst[2] = SDL_SwapFloatBE(sample2);
|
|
|
- dst[3] = SDL_SwapFloatBE(sample3);
|
|
|
- dst[4] = SDL_SwapFloatBE(sample4);
|
|
|
- dst[5] = SDL_SwapFloatBE(sample5);
|
|
|
- dst += 6;
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatBE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatBE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- sample2 = (float) ((((double) SDL_SwapFloatBE(src[2])) + ((double) last_sample2)) * 0.5);
|
|
|
- sample3 = (float) ((((double) SDL_SwapFloatBE(src[3])) + ((double) last_sample3)) * 0.5);
|
|
|
- sample4 = (float) ((((double) SDL_SwapFloatBE(src[4])) + ((double) last_sample4)) * 0.5);
|
|
|
- sample5 = (float) ((((double) SDL_SwapFloatBE(src[5])) + ((double) last_sample5)) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample arbitrary (x%f) AUDIO_F32MSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 512;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/32)) * cvt->rate_incr) * 32;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 8;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- float sample7 = SDL_SwapFloatBE(src[7]);
|
|
|
- float sample6 = SDL_SwapFloatBE(src[6]);
|
|
|
- float sample5 = SDL_SwapFloatBE(src[5]);
|
|
|
- float sample4 = SDL_SwapFloatBE(src[4]);
|
|
|
- float sample3 = SDL_SwapFloatBE(src[3]);
|
|
|
- float sample2 = SDL_SwapFloatBE(src[2]);
|
|
|
- float sample1 = SDL_SwapFloatBE(src[1]);
|
|
|
- float sample0 = SDL_SwapFloatBE(src[0]);
|
|
|
- float last_sample7 = sample7;
|
|
|
- float last_sample6 = sample6;
|
|
|
- float last_sample5 = sample5;
|
|
|
- float last_sample4 = sample4;
|
|
|
- float last_sample3 = sample3;
|
|
|
- float last_sample2 = sample2;
|
|
|
- float last_sample1 = sample1;
|
|
|
- float last_sample0 = sample0;
|
|
|
- while (dst >= target) {
|
|
|
- dst[7] = SDL_SwapFloatBE(sample7);
|
|
|
- dst[6] = SDL_SwapFloatBE(sample6);
|
|
|
- dst[5] = SDL_SwapFloatBE(sample5);
|
|
|
- dst[4] = SDL_SwapFloatBE(sample4);
|
|
|
- dst[3] = SDL_SwapFloatBE(sample3);
|
|
|
- dst[2] = SDL_SwapFloatBE(sample2);
|
|
|
- dst[1] = SDL_SwapFloatBE(sample1);
|
|
|
- dst[0] = SDL_SwapFloatBE(sample0);
|
|
|
- dst -= 8;
|
|
|
- eps += srcsize;
|
|
|
- if ((eps << 1) >= dstsize) {
|
|
|
- src -= 8;
|
|
|
- sample7 = (float) ((((double) SDL_SwapFloatBE(src[7])) + ((double) last_sample7)) * 0.5);
|
|
|
- sample6 = (float) ((((double) SDL_SwapFloatBE(src[6])) + ((double) last_sample6)) * 0.5);
|
|
|
- sample5 = (float) ((((double) SDL_SwapFloatBE(src[5])) + ((double) last_sample5)) * 0.5);
|
|
|
- sample4 = (float) ((((double) SDL_SwapFloatBE(src[4])) + ((double) last_sample4)) * 0.5);
|
|
|
- sample3 = (float) ((((double) SDL_SwapFloatBE(src[3])) + ((double) last_sample3)) * 0.5);
|
|
|
- sample2 = (float) ((((double) SDL_SwapFloatBE(src[2])) + ((double) last_sample2)) * 0.5);
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatBE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatBE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- eps -= dstsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_8c(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample arbitrary (x%f) AUDIO_F32MSB, 8 channels.\n", cvt->rate_incr);
|
|
|
-#endif
|
|
|
-
|
|
|
- const int srcsize = cvt->len_cvt - 512;
|
|
|
- const int dstsize = (int) (((double)(cvt->len_cvt/32)) * cvt->rate_incr) * 32;
|
|
|
- register int eps = 0;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- float sample0 = SDL_SwapFloatBE(src[0]);
|
|
|
- float sample1 = SDL_SwapFloatBE(src[1]);
|
|
|
- float sample2 = SDL_SwapFloatBE(src[2]);
|
|
|
- float sample3 = SDL_SwapFloatBE(src[3]);
|
|
|
- float sample4 = SDL_SwapFloatBE(src[4]);
|
|
|
- float sample5 = SDL_SwapFloatBE(src[5]);
|
|
|
- float sample6 = SDL_SwapFloatBE(src[6]);
|
|
|
- float sample7 = SDL_SwapFloatBE(src[7]);
|
|
|
- float last_sample0 = sample0;
|
|
|
- float last_sample1 = sample1;
|
|
|
- float last_sample2 = sample2;
|
|
|
- float last_sample3 = sample3;
|
|
|
- float last_sample4 = sample4;
|
|
|
- float last_sample5 = sample5;
|
|
|
- float last_sample6 = sample6;
|
|
|
- float last_sample7 = sample7;
|
|
|
- while (dst < target) {
|
|
|
- src += 8;
|
|
|
- eps += dstsize;
|
|
|
- if ((eps << 1) >= srcsize) {
|
|
|
- dst[0] = SDL_SwapFloatBE(sample0);
|
|
|
- dst[1] = SDL_SwapFloatBE(sample1);
|
|
|
- dst[2] = SDL_SwapFloatBE(sample2);
|
|
|
- dst[3] = SDL_SwapFloatBE(sample3);
|
|
|
- dst[4] = SDL_SwapFloatBE(sample4);
|
|
|
- dst[5] = SDL_SwapFloatBE(sample5);
|
|
|
- dst[6] = SDL_SwapFloatBE(sample6);
|
|
|
- dst[7] = SDL_SwapFloatBE(sample7);
|
|
|
- dst += 8;
|
|
|
- sample0 = (float) ((((double) SDL_SwapFloatBE(src[0])) + ((double) last_sample0)) * 0.5);
|
|
|
- sample1 = (float) ((((double) SDL_SwapFloatBE(src[1])) + ((double) last_sample1)) * 0.5);
|
|
|
- sample2 = (float) ((((double) SDL_SwapFloatBE(src[2])) + ((double) last_sample2)) * 0.5);
|
|
|
- sample3 = (float) ((((double) SDL_SwapFloatBE(src[3])) + ((double) last_sample3)) * 0.5);
|
|
|
- sample4 = (float) ((((double) SDL_SwapFloatBE(src[4])) + ((double) last_sample4)) * 0.5);
|
|
|
- sample5 = (float) ((((double) SDL_SwapFloatBE(src[5])) + ((double) last_sample5)) * 0.5);
|
|
|
- sample6 = (float) ((((double) SDL_SwapFloatBE(src[6])) + ((double) last_sample6)) * 0.5);
|
|
|
- sample7 = (float) ((((double) SDL_SwapFloatBE(src[7])) + ((double) last_sample7)) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- eps -= srcsize;
|
|
|
- }
|
|
|
- }
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-#if !LESS_RESAMPLERS
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U8, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 1 * 2;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- src--;
|
|
|
- dst[1] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[0] = (Uint8) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U8, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- src += 2;
|
|
|
- dst[0] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U8, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 1 * 4;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- src--;
|
|
|
- dst[3] = (Uint8) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[2] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint8) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[0] = (Uint8) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U8, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- src += 4;
|
|
|
- dst[0] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U8, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 2 * 2;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- src -= 2;
|
|
|
- dst[3] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint8) sample1;
|
|
|
- dst[0] = (Uint8) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U8, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- src += 4;
|
|
|
- dst[0] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U8, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 2 * 4;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- src -= 2;
|
|
|
- dst[7] = (Uint8) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[6] = (Uint8) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[5] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Uint8) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[2] = (Uint8) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[1] = (Uint8) sample1;
|
|
|
- dst[0] = (Uint8) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U8, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- src += 8;
|
|
|
- dst[0] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U8, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 4 * 2;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Sint16 last_sample3 = (Sint16) src[3];
|
|
|
- Sint16 last_sample2 = (Sint16) src[2];
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample3 = (Sint16) src[3];
|
|
|
- const Sint16 sample2 = (Sint16) src[2];
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- src -= 4;
|
|
|
- dst[7] = (Uint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[6] = (Uint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[5] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Uint8) sample3;
|
|
|
- dst[2] = (Uint8) sample2;
|
|
|
- dst[1] = (Uint8) sample1;
|
|
|
- dst[0] = (Uint8) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U8, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- Sint16 last_sample2 = (Sint16) src[2];
|
|
|
- Sint16 last_sample3 = (Sint16) src[3];
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- const Sint16 sample2 = (Sint16) src[2];
|
|
|
- const Sint16 sample3 = (Sint16) src[3];
|
|
|
- src += 8;
|
|
|
- dst[0] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint8) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U8, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 4 * 4;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Sint16 last_sample3 = (Sint16) src[3];
|
|
|
- Sint16 last_sample2 = (Sint16) src[2];
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample3 = (Sint16) src[3];
|
|
|
- const Sint16 sample2 = (Sint16) src[2];
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- src -= 4;
|
|
|
- dst[15] = (Uint8) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[14] = (Uint8) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[13] = (Uint8) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[12] = (Uint8) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[11] = (Uint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Uint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Uint8) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[6] = (Uint8) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[5] = (Uint8) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[4] = (Uint8) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[3] = (Uint8) sample3;
|
|
|
- dst[2] = (Uint8) sample2;
|
|
|
- dst[1] = (Uint8) sample1;
|
|
|
- dst[0] = (Uint8) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U8, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- Sint16 last_sample2 = (Sint16) src[2];
|
|
|
- Sint16 last_sample3 = (Sint16) src[3];
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- const Sint16 sample2 = (Sint16) src[2];
|
|
|
- const Sint16 sample3 = (Sint16) src[3];
|
|
|
- src += 16;
|
|
|
- dst[0] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint8) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U8, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 6 * 2;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Sint16 last_sample5 = (Sint16) src[5];
|
|
|
- Sint16 last_sample4 = (Sint16) src[4];
|
|
|
- Sint16 last_sample3 = (Sint16) src[3];
|
|
|
- Sint16 last_sample2 = (Sint16) src[2];
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample5 = (Sint16) src[5];
|
|
|
- const Sint16 sample4 = (Sint16) src[4];
|
|
|
- const Sint16 sample3 = (Sint16) src[3];
|
|
|
- const Sint16 sample2 = (Sint16) src[2];
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- src -= 6;
|
|
|
- dst[11] = (Uint8) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[10] = (Uint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[9] = (Uint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[8] = (Uint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[7] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[6] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[5] = (Uint8) sample5;
|
|
|
- dst[4] = (Uint8) sample4;
|
|
|
- dst[3] = (Uint8) sample3;
|
|
|
- dst[2] = (Uint8) sample2;
|
|
|
- dst[1] = (Uint8) sample1;
|
|
|
- dst[0] = (Uint8) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 12;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U8, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- Sint16 last_sample2 = (Sint16) src[2];
|
|
|
- Sint16 last_sample3 = (Sint16) src[3];
|
|
|
- Sint16 last_sample4 = (Sint16) src[4];
|
|
|
- Sint16 last_sample5 = (Sint16) src[5];
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- const Sint16 sample2 = (Sint16) src[2];
|
|
|
- const Sint16 sample3 = (Sint16) src[3];
|
|
|
- const Sint16 sample4 = (Sint16) src[4];
|
|
|
- const Sint16 sample5 = (Sint16) src[5];
|
|
|
- src += 12;
|
|
|
- dst[0] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Uint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Uint8) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U8, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 6 * 4;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Sint16 last_sample5 = (Sint16) src[5];
|
|
|
- Sint16 last_sample4 = (Sint16) src[4];
|
|
|
- Sint16 last_sample3 = (Sint16) src[3];
|
|
|
- Sint16 last_sample2 = (Sint16) src[2];
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample5 = (Sint16) src[5];
|
|
|
- const Sint16 sample4 = (Sint16) src[4];
|
|
|
- const Sint16 sample3 = (Sint16) src[3];
|
|
|
- const Sint16 sample2 = (Sint16) src[2];
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- src -= 6;
|
|
|
- dst[23] = (Uint8) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[22] = (Uint8) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[21] = (Uint8) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[20] = (Uint8) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[19] = (Uint8) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[18] = (Uint8) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[17] = (Uint8) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[16] = (Uint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[15] = (Uint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[14] = (Uint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[13] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[12] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[11] = (Uint8) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[10] = (Uint8) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[9] = (Uint8) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[8] = (Uint8) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[7] = (Uint8) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[6] = (Uint8) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[5] = (Uint8) sample5;
|
|
|
- dst[4] = (Uint8) sample4;
|
|
|
- dst[3] = (Uint8) sample3;
|
|
|
- dst[2] = (Uint8) sample2;
|
|
|
- dst[1] = (Uint8) sample1;
|
|
|
- dst[0] = (Uint8) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 24;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U8, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- Sint16 last_sample2 = (Sint16) src[2];
|
|
|
- Sint16 last_sample3 = (Sint16) src[3];
|
|
|
- Sint16 last_sample4 = (Sint16) src[4];
|
|
|
- Sint16 last_sample5 = (Sint16) src[5];
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- const Sint16 sample2 = (Sint16) src[2];
|
|
|
- const Sint16 sample3 = (Sint16) src[3];
|
|
|
- const Sint16 sample4 = (Sint16) src[4];
|
|
|
- const Sint16 sample5 = (Sint16) src[5];
|
|
|
- src += 24;
|
|
|
- dst[0] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Uint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Uint8) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U8, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 8 * 2;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Sint16 last_sample7 = (Sint16) src[7];
|
|
|
- Sint16 last_sample6 = (Sint16) src[6];
|
|
|
- Sint16 last_sample5 = (Sint16) src[5];
|
|
|
- Sint16 last_sample4 = (Sint16) src[4];
|
|
|
- Sint16 last_sample3 = (Sint16) src[3];
|
|
|
- Sint16 last_sample2 = (Sint16) src[2];
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample7 = (Sint16) src[7];
|
|
|
- const Sint16 sample6 = (Sint16) src[6];
|
|
|
- const Sint16 sample5 = (Sint16) src[5];
|
|
|
- const Sint16 sample4 = (Sint16) src[4];
|
|
|
- const Sint16 sample3 = (Sint16) src[3];
|
|
|
- const Sint16 sample2 = (Sint16) src[2];
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- src -= 8;
|
|
|
- dst[15] = (Uint8) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[14] = (Uint8) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[13] = (Uint8) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[12] = (Uint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[11] = (Uint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Uint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Uint8) sample7;
|
|
|
- dst[6] = (Uint8) sample6;
|
|
|
- dst[5] = (Uint8) sample5;
|
|
|
- dst[4] = (Uint8) sample4;
|
|
|
- dst[3] = (Uint8) sample3;
|
|
|
- dst[2] = (Uint8) sample2;
|
|
|
- dst[1] = (Uint8) sample1;
|
|
|
- dst[0] = (Uint8) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U8, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- Sint16 last_sample2 = (Sint16) src[2];
|
|
|
- Sint16 last_sample3 = (Sint16) src[3];
|
|
|
- Sint16 last_sample4 = (Sint16) src[4];
|
|
|
- Sint16 last_sample5 = (Sint16) src[5];
|
|
|
- Sint16 last_sample6 = (Sint16) src[6];
|
|
|
- Sint16 last_sample7 = (Sint16) src[7];
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- const Sint16 sample2 = (Sint16) src[2];
|
|
|
- const Sint16 sample3 = (Sint16) src[3];
|
|
|
- const Sint16 sample4 = (Sint16) src[4];
|
|
|
- const Sint16 sample5 = (Sint16) src[5];
|
|
|
- const Sint16 sample6 = (Sint16) src[6];
|
|
|
- const Sint16 sample7 = (Sint16) src[7];
|
|
|
- src += 16;
|
|
|
- dst[0] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Uint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Uint8) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Uint8) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Uint8) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U8_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U8, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint8 *dst = ((Uint8 *) (cvt->buf + dstsize)) - 8 * 4;
|
|
|
- const Uint8 *src = ((Uint8 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Uint8 *target = ((const Uint8 *) cvt->buf);
|
|
|
- Sint16 last_sample7 = (Sint16) src[7];
|
|
|
- Sint16 last_sample6 = (Sint16) src[6];
|
|
|
- Sint16 last_sample5 = (Sint16) src[5];
|
|
|
- Sint16 last_sample4 = (Sint16) src[4];
|
|
|
- Sint16 last_sample3 = (Sint16) src[3];
|
|
|
- Sint16 last_sample2 = (Sint16) src[2];
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample7 = (Sint16) src[7];
|
|
|
- const Sint16 sample6 = (Sint16) src[6];
|
|
|
- const Sint16 sample5 = (Sint16) src[5];
|
|
|
- const Sint16 sample4 = (Sint16) src[4];
|
|
|
- const Sint16 sample3 = (Sint16) src[3];
|
|
|
- const Sint16 sample2 = (Sint16) src[2];
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- src -= 8;
|
|
|
- dst[31] = (Uint8) ((sample7 + (3 * last_sample7)) >> 2);
|
|
|
- dst[30] = (Uint8) ((sample6 + (3 * last_sample6)) >> 2);
|
|
|
- dst[29] = (Uint8) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[28] = (Uint8) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[27] = (Uint8) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[26] = (Uint8) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[25] = (Uint8) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[24] = (Uint8) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[23] = (Uint8) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[22] = (Uint8) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[21] = (Uint8) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[20] = (Uint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[19] = (Uint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[18] = (Uint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[17] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[16] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[15] = (Uint8) (((3 * sample7) + last_sample7) >> 2);
|
|
|
- dst[14] = (Uint8) (((3 * sample6) + last_sample6) >> 2);
|
|
|
- dst[13] = (Uint8) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[12] = (Uint8) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[11] = (Uint8) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[10] = (Uint8) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[9] = (Uint8) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[8] = (Uint8) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[7] = (Uint8) sample7;
|
|
|
- dst[6] = (Uint8) sample6;
|
|
|
- dst[5] = (Uint8) sample5;
|
|
|
- dst[4] = (Uint8) sample4;
|
|
|
- dst[3] = (Uint8) sample3;
|
|
|
- dst[2] = (Uint8) sample2;
|
|
|
- dst[1] = (Uint8) sample1;
|
|
|
- dst[0] = (Uint8) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 32;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U8_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U8, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint8 *dst = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *src = (Uint8 *) cvt->buf;
|
|
|
- const Uint8 *target = (const Uint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) src[0];
|
|
|
- Sint16 last_sample1 = (Sint16) src[1];
|
|
|
- Sint16 last_sample2 = (Sint16) src[2];
|
|
|
- Sint16 last_sample3 = (Sint16) src[3];
|
|
|
- Sint16 last_sample4 = (Sint16) src[4];
|
|
|
- Sint16 last_sample5 = (Sint16) src[5];
|
|
|
- Sint16 last_sample6 = (Sint16) src[6];
|
|
|
- Sint16 last_sample7 = (Sint16) src[7];
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) src[0];
|
|
|
- const Sint16 sample1 = (Sint16) src[1];
|
|
|
- const Sint16 sample2 = (Sint16) src[2];
|
|
|
- const Sint16 sample3 = (Sint16) src[3];
|
|
|
- const Sint16 sample4 = (Sint16) src[4];
|
|
|
- const Sint16 sample5 = (Sint16) src[5];
|
|
|
- const Sint16 sample6 = (Sint16) src[6];
|
|
|
- const Sint16 sample7 = (Sint16) src[7];
|
|
|
- src += 32;
|
|
|
- dst[0] = (Uint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Uint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Uint8) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Uint8) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Uint8) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S8, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 1 * 2;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- src--;
|
|
|
- dst[1] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[0] = (Sint8) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S8, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- src += 2;
|
|
|
- dst[0] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S8, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 1 * 4;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- src--;
|
|
|
- dst[3] = (Sint8) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[2] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint8) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[0] = (Sint8) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S8, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- src += 4;
|
|
|
- dst[0] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S8, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 2 * 2;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- src -= 2;
|
|
|
- dst[3] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint8) sample1;
|
|
|
- dst[0] = (Sint8) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S8, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- src += 4;
|
|
|
- dst[0] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S8, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 2 * 4;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- src -= 2;
|
|
|
- dst[7] = (Sint8) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[6] = (Sint8) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[5] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Sint8) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[2] = (Sint8) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[1] = (Sint8) sample1;
|
|
|
- dst[0] = (Sint8) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S8, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- src += 8;
|
|
|
- dst[0] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S8, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 4 * 2;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint16 last_sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- Sint16 last_sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- const Sint16 sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- src -= 4;
|
|
|
- dst[7] = (Sint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[6] = (Sint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[5] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Sint8) sample3;
|
|
|
- dst[2] = (Sint8) sample2;
|
|
|
- dst[1] = (Sint8) sample1;
|
|
|
- dst[0] = (Sint8) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S8, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- Sint16 last_sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- Sint16 last_sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- const Sint16 sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- const Sint16 sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- src += 8;
|
|
|
- dst[0] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint8) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S8, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 4 * 4;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint16 last_sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- Sint16 last_sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- const Sint16 sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- src -= 4;
|
|
|
- dst[15] = (Sint8) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[14] = (Sint8) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[13] = (Sint8) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[12] = (Sint8) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[11] = (Sint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Sint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Sint8) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[6] = (Sint8) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[5] = (Sint8) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[4] = (Sint8) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[3] = (Sint8) sample3;
|
|
|
- dst[2] = (Sint8) sample2;
|
|
|
- dst[1] = (Sint8) sample1;
|
|
|
- dst[0] = (Sint8) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S8, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- Sint16 last_sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- Sint16 last_sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- const Sint16 sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- const Sint16 sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- src += 16;
|
|
|
- dst[0] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint8) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S8, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 6 * 2;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint16 last_sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- Sint16 last_sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- Sint16 last_sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- Sint16 last_sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- const Sint16 sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- const Sint16 sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- const Sint16 sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- src -= 6;
|
|
|
- dst[11] = (Sint8) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[10] = (Sint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[9] = (Sint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[8] = (Sint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[7] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[6] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[5] = (Sint8) sample5;
|
|
|
- dst[4] = (Sint8) sample4;
|
|
|
- dst[3] = (Sint8) sample3;
|
|
|
- dst[2] = (Sint8) sample2;
|
|
|
- dst[1] = (Sint8) sample1;
|
|
|
- dst[0] = (Sint8) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 12;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S8, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- Sint16 last_sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- Sint16 last_sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- Sint16 last_sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- Sint16 last_sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- const Sint16 sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- const Sint16 sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- const Sint16 sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- const Sint16 sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- src += 12;
|
|
|
- dst[0] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint8) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S8, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 6 * 4;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint16 last_sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- Sint16 last_sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- Sint16 last_sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- Sint16 last_sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- const Sint16 sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- const Sint16 sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- const Sint16 sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- src -= 6;
|
|
|
- dst[23] = (Sint8) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[22] = (Sint8) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[21] = (Sint8) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[20] = (Sint8) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[19] = (Sint8) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[18] = (Sint8) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[17] = (Sint8) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[16] = (Sint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[15] = (Sint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[14] = (Sint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[13] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[12] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[11] = (Sint8) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[10] = (Sint8) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[9] = (Sint8) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[8] = (Sint8) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[7] = (Sint8) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[6] = (Sint8) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[5] = (Sint8) sample5;
|
|
|
- dst[4] = (Sint8) sample4;
|
|
|
- dst[3] = (Sint8) sample3;
|
|
|
- dst[2] = (Sint8) sample2;
|
|
|
- dst[1] = (Sint8) sample1;
|
|
|
- dst[0] = (Sint8) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 24;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S8, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- Sint16 last_sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- Sint16 last_sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- Sint16 last_sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- Sint16 last_sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- const Sint16 sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- const Sint16 sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- const Sint16 sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- const Sint16 sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- src += 24;
|
|
|
- dst[0] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint8) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S8, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 8 * 2;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint16 last_sample7 = (Sint16) ((Sint8) src[7]);
|
|
|
- Sint16 last_sample6 = (Sint16) ((Sint8) src[6]);
|
|
|
- Sint16 last_sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- Sint16 last_sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- Sint16 last_sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- Sint16 last_sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample7 = (Sint16) ((Sint8) src[7]);
|
|
|
- const Sint16 sample6 = (Sint16) ((Sint8) src[6]);
|
|
|
- const Sint16 sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- const Sint16 sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- const Sint16 sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- const Sint16 sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- src -= 8;
|
|
|
- dst[15] = (Sint8) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[14] = (Sint8) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[13] = (Sint8) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[12] = (Sint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[11] = (Sint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Sint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Sint8) sample7;
|
|
|
- dst[6] = (Sint8) sample6;
|
|
|
- dst[5] = (Sint8) sample5;
|
|
|
- dst[4] = (Sint8) sample4;
|
|
|
- dst[3] = (Sint8) sample3;
|
|
|
- dst[2] = (Sint8) sample2;
|
|
|
- dst[1] = (Sint8) sample1;
|
|
|
- dst[0] = (Sint8) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S8, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- Sint16 last_sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- Sint16 last_sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- Sint16 last_sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- Sint16 last_sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- Sint16 last_sample6 = (Sint16) ((Sint8) src[6]);
|
|
|
- Sint16 last_sample7 = (Sint16) ((Sint8) src[7]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- const Sint16 sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- const Sint16 sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- const Sint16 sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- const Sint16 sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- const Sint16 sample6 = (Sint16) ((Sint8) src[6]);
|
|
|
- const Sint16 sample7 = (Sint16) ((Sint8) src[7]);
|
|
|
- src += 16;
|
|
|
- dst[0] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint8) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Sint8) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Sint8) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S8_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S8, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint8 *dst = ((Sint8 *) (cvt->buf + dstsize)) - 8 * 4;
|
|
|
- const Sint8 *src = ((Sint8 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint8 *target = ((const Sint8 *) cvt->buf);
|
|
|
- Sint16 last_sample7 = (Sint16) ((Sint8) src[7]);
|
|
|
- Sint16 last_sample6 = (Sint16) ((Sint8) src[6]);
|
|
|
- Sint16 last_sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- Sint16 last_sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- Sint16 last_sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- Sint16 last_sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint16 sample7 = (Sint16) ((Sint8) src[7]);
|
|
|
- const Sint16 sample6 = (Sint16) ((Sint8) src[6]);
|
|
|
- const Sint16 sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- const Sint16 sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- const Sint16 sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- const Sint16 sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- src -= 8;
|
|
|
- dst[31] = (Sint8) ((sample7 + (3 * last_sample7)) >> 2);
|
|
|
- dst[30] = (Sint8) ((sample6 + (3 * last_sample6)) >> 2);
|
|
|
- dst[29] = (Sint8) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[28] = (Sint8) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[27] = (Sint8) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[26] = (Sint8) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[25] = (Sint8) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[24] = (Sint8) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[23] = (Sint8) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[22] = (Sint8) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[21] = (Sint8) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[20] = (Sint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[19] = (Sint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[18] = (Sint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[17] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[16] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[15] = (Sint8) (((3 * sample7) + last_sample7) >> 2);
|
|
|
- dst[14] = (Sint8) (((3 * sample6) + last_sample6) >> 2);
|
|
|
- dst[13] = (Sint8) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[12] = (Sint8) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[11] = (Sint8) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[10] = (Sint8) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[9] = (Sint8) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[8] = (Sint8) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[7] = (Sint8) sample7;
|
|
|
- dst[6] = (Sint8) sample6;
|
|
|
- dst[5] = (Sint8) sample5;
|
|
|
- dst[4] = (Sint8) sample4;
|
|
|
- dst[3] = (Sint8) sample3;
|
|
|
- dst[2] = (Sint8) sample2;
|
|
|
- dst[1] = (Sint8) sample1;
|
|
|
- dst[0] = (Sint8) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 32;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S8_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S8, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint8 *dst = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *src = (Sint8 *) cvt->buf;
|
|
|
- const Sint8 *target = (const Sint8 *) (cvt->buf + dstsize);
|
|
|
- Sint16 last_sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- Sint16 last_sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- Sint16 last_sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- Sint16 last_sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- Sint16 last_sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- Sint16 last_sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- Sint16 last_sample6 = (Sint16) ((Sint8) src[6]);
|
|
|
- Sint16 last_sample7 = (Sint16) ((Sint8) src[7]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint16 sample0 = (Sint16) ((Sint8) src[0]);
|
|
|
- const Sint16 sample1 = (Sint16) ((Sint8) src[1]);
|
|
|
- const Sint16 sample2 = (Sint16) ((Sint8) src[2]);
|
|
|
- const Sint16 sample3 = (Sint16) ((Sint8) src[3]);
|
|
|
- const Sint16 sample4 = (Sint16) ((Sint8) src[4]);
|
|
|
- const Sint16 sample5 = (Sint16) ((Sint8) src[5]);
|
|
|
- const Sint16 sample6 = (Sint16) ((Sint8) src[6]);
|
|
|
- const Sint16 sample7 = (Sint16) ((Sint8) src[7]);
|
|
|
- src += 32;
|
|
|
- dst[0] = (Sint8) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint8) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint8) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint8) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint8) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint8) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Sint8) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Sint8) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U16LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 1 * 2;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- src--;
|
|
|
- dst[1] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U16LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- src += 2;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U16LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 1 * 4;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- src--;
|
|
|
- dst[3] = (Uint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[2] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U16LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- src += 4;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U16LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 2 * 2;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- src -= 2;
|
|
|
- dst[3] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U16LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- src += 4;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U16LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 2 * 4;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- src -= 2;
|
|
|
- dst[7] = (Uint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[6] = (Uint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[5] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Uint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[2] = (Uint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U16LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- src += 8;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U16LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 4 * 2;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- src -= 4;
|
|
|
- dst[7] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[6] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[5] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Uint16) sample3;
|
|
|
- dst[2] = (Uint16) sample2;
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U16LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- src += 8;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U16LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 4 * 4;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- src -= 4;
|
|
|
- dst[15] = (Uint16) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[14] = (Uint16) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[13] = (Uint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[12] = (Uint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[11] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Uint16) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[6] = (Uint16) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[5] = (Uint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[4] = (Uint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[3] = (Uint16) sample3;
|
|
|
- dst[2] = (Uint16) sample2;
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U16LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- src += 16;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U16LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 6 * 2;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- src -= 6;
|
|
|
- dst[11] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[10] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[9] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[8] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[7] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[6] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[5] = (Uint16) sample5;
|
|
|
- dst[4] = (Uint16) sample4;
|
|
|
- dst[3] = (Uint16) sample3;
|
|
|
- dst[2] = (Uint16) sample2;
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 12;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U16LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- src += 12;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U16LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 6 * 4;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- src -= 6;
|
|
|
- dst[23] = (Uint16) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[22] = (Uint16) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[21] = (Uint16) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[20] = (Uint16) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[19] = (Uint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[18] = (Uint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[17] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[16] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[15] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[14] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[13] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[12] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[11] = (Uint16) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[10] = (Uint16) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[9] = (Uint16) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[8] = (Uint16) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[7] = (Uint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[6] = (Uint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[5] = (Uint16) sample5;
|
|
|
- dst[4] = (Uint16) sample4;
|
|
|
- dst[3] = (Uint16) sample3;
|
|
|
- dst[2] = (Uint16) sample2;
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 24;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U16LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- src += 24;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U16LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 8 * 2;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample7 = (Sint32) SDL_SwapLE16(src[7]);
|
|
|
- Sint32 last_sample6 = (Sint32) SDL_SwapLE16(src[6]);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample7 = (Sint32) SDL_SwapLE16(src[7]);
|
|
|
- const Sint32 sample6 = (Sint32) SDL_SwapLE16(src[6]);
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- src -= 8;
|
|
|
- dst[15] = (Uint16) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[14] = (Uint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[13] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[12] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[11] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Uint16) sample7;
|
|
|
- dst[6] = (Uint16) sample6;
|
|
|
- dst[5] = (Uint16) sample5;
|
|
|
- dst[4] = (Uint16) sample4;
|
|
|
- dst[3] = (Uint16) sample3;
|
|
|
- dst[2] = (Uint16) sample2;
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U16LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- Sint32 last_sample6 = (Sint32) SDL_SwapLE16(src[6]);
|
|
|
- Sint32 last_sample7 = (Sint32) SDL_SwapLE16(src[7]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- const Sint32 sample6 = (Sint32) SDL_SwapLE16(src[6]);
|
|
|
- const Sint32 sample7 = (Sint32) SDL_SwapLE16(src[7]);
|
|
|
- src += 16;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Uint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Uint16) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16LSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U16LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 8 * 4;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample7 = (Sint32) SDL_SwapLE16(src[7]);
|
|
|
- Sint32 last_sample6 = (Sint32) SDL_SwapLE16(src[6]);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample7 = (Sint32) SDL_SwapLE16(src[7]);
|
|
|
- const Sint32 sample6 = (Sint32) SDL_SwapLE16(src[6]);
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- src -= 8;
|
|
|
- dst[31] = (Uint16) ((sample7 + (3 * last_sample7)) >> 2);
|
|
|
- dst[30] = (Uint16) ((sample6 + (3 * last_sample6)) >> 2);
|
|
|
- dst[29] = (Uint16) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[28] = (Uint16) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[27] = (Uint16) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[26] = (Uint16) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[25] = (Uint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[24] = (Uint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[23] = (Uint16) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[22] = (Uint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[21] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[20] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[19] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[18] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[17] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[16] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[15] = (Uint16) (((3 * sample7) + last_sample7) >> 2);
|
|
|
- dst[14] = (Uint16) (((3 * sample6) + last_sample6) >> 2);
|
|
|
- dst[13] = (Uint16) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[12] = (Uint16) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[11] = (Uint16) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[10] = (Uint16) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[9] = (Uint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[8] = (Uint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[7] = (Uint16) sample7;
|
|
|
- dst[6] = (Uint16) sample6;
|
|
|
- dst[5] = (Uint16) sample5;
|
|
|
- dst[4] = (Uint16) sample4;
|
|
|
- dst[3] = (Uint16) sample3;
|
|
|
- dst[2] = (Uint16) sample2;
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 32;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16LSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U16LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- Sint32 last_sample6 = (Sint32) SDL_SwapLE16(src[6]);
|
|
|
- Sint32 last_sample7 = (Sint32) SDL_SwapLE16(src[7]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapLE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapLE16(src[1]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapLE16(src[2]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapLE16(src[3]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapLE16(src[4]);
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapLE16(src[5]);
|
|
|
- const Sint32 sample6 = (Sint32) SDL_SwapLE16(src[6]);
|
|
|
- const Sint32 sample7 = (Sint32) SDL_SwapLE16(src[7]);
|
|
|
- src += 32;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Uint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Uint16) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S16LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 1 * 2;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- src--;
|
|
|
- dst[1] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S16LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- src += 2;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S16LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 1 * 4;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- src--;
|
|
|
- dst[3] = (Sint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[2] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S16LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- src += 4;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S16LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 2 * 2;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- src -= 2;
|
|
|
- dst[3] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S16LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- src += 4;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S16LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 2 * 4;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- src -= 2;
|
|
|
- dst[7] = (Sint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[6] = (Sint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[5] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Sint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[2] = (Sint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S16LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- src += 8;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S16LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 4 * 2;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- src -= 4;
|
|
|
- dst[7] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[6] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[5] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Sint16) sample3;
|
|
|
- dst[2] = (Sint16) sample2;
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S16LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- src += 8;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S16LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 4 * 4;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- src -= 4;
|
|
|
- dst[15] = (Sint16) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[14] = (Sint16) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[13] = (Sint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[12] = (Sint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[11] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Sint16) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[6] = (Sint16) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[5] = (Sint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[4] = (Sint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[3] = (Sint16) sample3;
|
|
|
- dst[2] = (Sint16) sample2;
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S16LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- src += 16;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S16LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 6 * 2;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- src -= 6;
|
|
|
- dst[11] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[10] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[9] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[8] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[7] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[6] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[5] = (Sint16) sample5;
|
|
|
- dst[4] = (Sint16) sample4;
|
|
|
- dst[3] = (Sint16) sample3;
|
|
|
- dst[2] = (Sint16) sample2;
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 12;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S16LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- src += 12;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S16LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 6 * 4;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- src -= 6;
|
|
|
- dst[23] = (Sint16) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[22] = (Sint16) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[21] = (Sint16) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[20] = (Sint16) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[19] = (Sint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[18] = (Sint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[17] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[16] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[15] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[14] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[13] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[12] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[11] = (Sint16) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[10] = (Sint16) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[9] = (Sint16) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[8] = (Sint16) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[7] = (Sint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[6] = (Sint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[5] = (Sint16) sample5;
|
|
|
- dst[4] = (Sint16) sample4;
|
|
|
- dst[3] = (Sint16) sample3;
|
|
|
- dst[2] = (Sint16) sample2;
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 24;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S16LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- src += 24;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S16LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 8 * 2;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample7 = (Sint32) ((Sint16) SDL_SwapLE16(src[7]));
|
|
|
- Sint32 last_sample6 = (Sint32) ((Sint16) SDL_SwapLE16(src[6]));
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample7 = (Sint32) ((Sint16) SDL_SwapLE16(src[7]));
|
|
|
- const Sint32 sample6 = (Sint32) ((Sint16) SDL_SwapLE16(src[6]));
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- src -= 8;
|
|
|
- dst[15] = (Sint16) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[14] = (Sint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[13] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[12] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[11] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Sint16) sample7;
|
|
|
- dst[6] = (Sint16) sample6;
|
|
|
- dst[5] = (Sint16) sample5;
|
|
|
- dst[4] = (Sint16) sample4;
|
|
|
- dst[3] = (Sint16) sample3;
|
|
|
- dst[2] = (Sint16) sample2;
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S16LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- Sint32 last_sample6 = (Sint32) ((Sint16) SDL_SwapLE16(src[6]));
|
|
|
- Sint32 last_sample7 = (Sint32) ((Sint16) SDL_SwapLE16(src[7]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- const Sint32 sample6 = (Sint32) ((Sint16) SDL_SwapLE16(src[6]));
|
|
|
- const Sint32 sample7 = (Sint32) ((Sint16) SDL_SwapLE16(src[7]));
|
|
|
- src += 16;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Sint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Sint16) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16LSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S16LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 8 * 4;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample7 = (Sint32) ((Sint16) SDL_SwapLE16(src[7]));
|
|
|
- Sint32 last_sample6 = (Sint32) ((Sint16) SDL_SwapLE16(src[6]));
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample7 = (Sint32) ((Sint16) SDL_SwapLE16(src[7]));
|
|
|
- const Sint32 sample6 = (Sint32) ((Sint16) SDL_SwapLE16(src[6]));
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- src -= 8;
|
|
|
- dst[31] = (Sint16) ((sample7 + (3 * last_sample7)) >> 2);
|
|
|
- dst[30] = (Sint16) ((sample6 + (3 * last_sample6)) >> 2);
|
|
|
- dst[29] = (Sint16) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[28] = (Sint16) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[27] = (Sint16) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[26] = (Sint16) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[25] = (Sint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[24] = (Sint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[23] = (Sint16) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[22] = (Sint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[21] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[20] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[19] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[18] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[17] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[16] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[15] = (Sint16) (((3 * sample7) + last_sample7) >> 2);
|
|
|
- dst[14] = (Sint16) (((3 * sample6) + last_sample6) >> 2);
|
|
|
- dst[13] = (Sint16) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[12] = (Sint16) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[11] = (Sint16) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[10] = (Sint16) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[9] = (Sint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[8] = (Sint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[7] = (Sint16) sample7;
|
|
|
- dst[6] = (Sint16) sample6;
|
|
|
- dst[5] = (Sint16) sample5;
|
|
|
- dst[4] = (Sint16) sample4;
|
|
|
- dst[3] = (Sint16) sample3;
|
|
|
- dst[2] = (Sint16) sample2;
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 32;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16LSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S16LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- Sint32 last_sample6 = (Sint32) ((Sint16) SDL_SwapLE16(src[6]));
|
|
|
- Sint32 last_sample7 = (Sint32) ((Sint16) SDL_SwapLE16(src[7]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapLE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapLE16(src[1]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapLE16(src[2]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapLE16(src[3]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapLE16(src[4]));
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapLE16(src[5]));
|
|
|
- const Sint32 sample6 = (Sint32) ((Sint16) SDL_SwapLE16(src[6]));
|
|
|
- const Sint32 sample7 = (Sint32) ((Sint16) SDL_SwapLE16(src[7]));
|
|
|
- src += 32;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Sint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Sint16) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U16MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 1 * 2;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- src--;
|
|
|
- dst[1] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U16MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- src += 2;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U16MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 1 * 4;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- src--;
|
|
|
- dst[3] = (Uint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[2] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U16MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- src += 4;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U16MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 2 * 2;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- src -= 2;
|
|
|
- dst[3] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U16MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- src += 4;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U16MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 2 * 4;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- src -= 2;
|
|
|
- dst[7] = (Uint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[6] = (Uint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[5] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Uint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[2] = (Uint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U16MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- src += 8;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U16MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 4 * 2;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- src -= 4;
|
|
|
- dst[7] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[6] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[5] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Uint16) sample3;
|
|
|
- dst[2] = (Uint16) sample2;
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U16MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- src += 8;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U16MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 4 * 4;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- src -= 4;
|
|
|
- dst[15] = (Uint16) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[14] = (Uint16) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[13] = (Uint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[12] = (Uint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[11] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Uint16) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[6] = (Uint16) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[5] = (Uint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[4] = (Uint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[3] = (Uint16) sample3;
|
|
|
- dst[2] = (Uint16) sample2;
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U16MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- src += 16;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U16MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 6 * 2;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- src -= 6;
|
|
|
- dst[11] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[10] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[9] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[8] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[7] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[6] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[5] = (Uint16) sample5;
|
|
|
- dst[4] = (Uint16) sample4;
|
|
|
- dst[3] = (Uint16) sample3;
|
|
|
- dst[2] = (Uint16) sample2;
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 12;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U16MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- src += 12;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U16MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 6 * 4;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- src -= 6;
|
|
|
- dst[23] = (Uint16) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[22] = (Uint16) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[21] = (Uint16) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[20] = (Uint16) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[19] = (Uint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[18] = (Uint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[17] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[16] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[15] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[14] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[13] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[12] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[11] = (Uint16) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[10] = (Uint16) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[9] = (Uint16) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[8] = (Uint16) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[7] = (Uint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[6] = (Uint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[5] = (Uint16) sample5;
|
|
|
- dst[4] = (Uint16) sample4;
|
|
|
- dst[3] = (Uint16) sample3;
|
|
|
- dst[2] = (Uint16) sample2;
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 24;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U16MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- src += 24;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_U16MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 8 * 2;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample7 = (Sint32) SDL_SwapBE16(src[7]);
|
|
|
- Sint32 last_sample6 = (Sint32) SDL_SwapBE16(src[6]);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample7 = (Sint32) SDL_SwapBE16(src[7]);
|
|
|
- const Sint32 sample6 = (Sint32) SDL_SwapBE16(src[6]);
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- src -= 8;
|
|
|
- dst[15] = (Uint16) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[14] = (Uint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[13] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[12] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[11] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Uint16) sample7;
|
|
|
- dst[6] = (Uint16) sample6;
|
|
|
- dst[5] = (Uint16) sample5;
|
|
|
- dst[4] = (Uint16) sample4;
|
|
|
- dst[3] = (Uint16) sample3;
|
|
|
- dst[2] = (Uint16) sample2;
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_U16MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- Sint32 last_sample6 = (Sint32) SDL_SwapBE16(src[6]);
|
|
|
- Sint32 last_sample7 = (Sint32) SDL_SwapBE16(src[7]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- const Sint32 sample6 = (Sint32) SDL_SwapBE16(src[6]);
|
|
|
- const Sint32 sample7 = (Sint32) SDL_SwapBE16(src[7]);
|
|
|
- src += 16;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Uint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Uint16) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_U16MSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_U16MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Uint16 *dst = ((Uint16 *) (cvt->buf + dstsize)) - 8 * 4;
|
|
|
- const Uint16 *src = ((Uint16 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Uint16 *target = ((const Uint16 *) cvt->buf);
|
|
|
- Sint32 last_sample7 = (Sint32) SDL_SwapBE16(src[7]);
|
|
|
- Sint32 last_sample6 = (Sint32) SDL_SwapBE16(src[6]);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample7 = (Sint32) SDL_SwapBE16(src[7]);
|
|
|
- const Sint32 sample6 = (Sint32) SDL_SwapBE16(src[6]);
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- src -= 8;
|
|
|
- dst[31] = (Uint16) ((sample7 + (3 * last_sample7)) >> 2);
|
|
|
- dst[30] = (Uint16) ((sample6 + (3 * last_sample6)) >> 2);
|
|
|
- dst[29] = (Uint16) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[28] = (Uint16) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[27] = (Uint16) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[26] = (Uint16) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[25] = (Uint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[24] = (Uint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[23] = (Uint16) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[22] = (Uint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[21] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[20] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[19] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[18] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[17] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[16] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[15] = (Uint16) (((3 * sample7) + last_sample7) >> 2);
|
|
|
- dst[14] = (Uint16) (((3 * sample6) + last_sample6) >> 2);
|
|
|
- dst[13] = (Uint16) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[12] = (Uint16) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[11] = (Uint16) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[10] = (Uint16) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[9] = (Uint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[8] = (Uint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[7] = (Uint16) sample7;
|
|
|
- dst[6] = (Uint16) sample6;
|
|
|
- dst[5] = (Uint16) sample5;
|
|
|
- dst[4] = (Uint16) sample4;
|
|
|
- dst[3] = (Uint16) sample3;
|
|
|
- dst[2] = (Uint16) sample2;
|
|
|
- dst[1] = (Uint16) sample1;
|
|
|
- dst[0] = (Uint16) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 32;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_U16MSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_U16MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Uint16 *dst = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *src = (Uint16 *) cvt->buf;
|
|
|
- const Uint16 *target = (const Uint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- Sint32 last_sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- Sint32 last_sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- Sint32 last_sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- Sint32 last_sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- Sint32 last_sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- Sint32 last_sample6 = (Sint32) SDL_SwapBE16(src[6]);
|
|
|
- Sint32 last_sample7 = (Sint32) SDL_SwapBE16(src[7]);
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) SDL_SwapBE16(src[0]);
|
|
|
- const Sint32 sample1 = (Sint32) SDL_SwapBE16(src[1]);
|
|
|
- const Sint32 sample2 = (Sint32) SDL_SwapBE16(src[2]);
|
|
|
- const Sint32 sample3 = (Sint32) SDL_SwapBE16(src[3]);
|
|
|
- const Sint32 sample4 = (Sint32) SDL_SwapBE16(src[4]);
|
|
|
- const Sint32 sample5 = (Sint32) SDL_SwapBE16(src[5]);
|
|
|
- const Sint32 sample6 = (Sint32) SDL_SwapBE16(src[6]);
|
|
|
- const Sint32 sample7 = (Sint32) SDL_SwapBE16(src[7]);
|
|
|
- src += 32;
|
|
|
- dst[0] = (Uint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Uint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Uint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Uint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Uint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Uint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Uint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Uint16) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S16MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 1 * 2;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- src--;
|
|
|
- dst[1] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S16MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- src += 2;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S16MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 1 * 4;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- src--;
|
|
|
- dst[3] = (Sint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[2] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S16MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- src += 4;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S16MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 2 * 2;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- src -= 2;
|
|
|
- dst[3] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S16MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- src += 4;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S16MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 2 * 4;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- src -= 2;
|
|
|
- dst[7] = (Sint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[6] = (Sint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[5] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Sint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[2] = (Sint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S16MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- src += 8;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S16MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 4 * 2;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- src -= 4;
|
|
|
- dst[7] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[6] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[5] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Sint16) sample3;
|
|
|
- dst[2] = (Sint16) sample2;
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S16MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- src += 8;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S16MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 4 * 4;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- src -= 4;
|
|
|
- dst[15] = (Sint16) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[14] = (Sint16) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[13] = (Sint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[12] = (Sint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[11] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Sint16) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[6] = (Sint16) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[5] = (Sint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[4] = (Sint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[3] = (Sint16) sample3;
|
|
|
- dst[2] = (Sint16) sample2;
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S16MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- src += 16;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S16MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 6 * 2;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- src -= 6;
|
|
|
- dst[11] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[10] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[9] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[8] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[7] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[6] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[5] = (Sint16) sample5;
|
|
|
- dst[4] = (Sint16) sample4;
|
|
|
- dst[3] = (Sint16) sample3;
|
|
|
- dst[2] = (Sint16) sample2;
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 12;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S16MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- src += 12;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S16MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 6 * 4;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- src -= 6;
|
|
|
- dst[23] = (Sint16) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[22] = (Sint16) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[21] = (Sint16) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[20] = (Sint16) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[19] = (Sint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[18] = (Sint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[17] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[16] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[15] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[14] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[13] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[12] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[11] = (Sint16) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[10] = (Sint16) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[9] = (Sint16) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[8] = (Sint16) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[7] = (Sint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[6] = (Sint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[5] = (Sint16) sample5;
|
|
|
- dst[4] = (Sint16) sample4;
|
|
|
- dst[3] = (Sint16) sample3;
|
|
|
- dst[2] = (Sint16) sample2;
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 24;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S16MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- src += 24;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S16MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 8 * 2;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample7 = (Sint32) ((Sint16) SDL_SwapBE16(src[7]));
|
|
|
- Sint32 last_sample6 = (Sint32) ((Sint16) SDL_SwapBE16(src[6]));
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample7 = (Sint32) ((Sint16) SDL_SwapBE16(src[7]));
|
|
|
- const Sint32 sample6 = (Sint32) ((Sint16) SDL_SwapBE16(src[6]));
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- src -= 8;
|
|
|
- dst[15] = (Sint16) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[14] = (Sint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[13] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[12] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[11] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Sint16) sample7;
|
|
|
- dst[6] = (Sint16) sample6;
|
|
|
- dst[5] = (Sint16) sample5;
|
|
|
- dst[4] = (Sint16) sample4;
|
|
|
- dst[3] = (Sint16) sample3;
|
|
|
- dst[2] = (Sint16) sample2;
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S16MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- Sint32 last_sample6 = (Sint32) ((Sint16) SDL_SwapBE16(src[6]));
|
|
|
- Sint32 last_sample7 = (Sint32) ((Sint16) SDL_SwapBE16(src[7]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- const Sint32 sample6 = (Sint32) ((Sint16) SDL_SwapBE16(src[6]));
|
|
|
- const Sint32 sample7 = (Sint32) ((Sint16) SDL_SwapBE16(src[7]));
|
|
|
- src += 16;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Sint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Sint16) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S16MSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S16MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint16 *dst = ((Sint16 *) (cvt->buf + dstsize)) - 8 * 4;
|
|
|
- const Sint16 *src = ((Sint16 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint16 *target = ((const Sint16 *) cvt->buf);
|
|
|
- Sint32 last_sample7 = (Sint32) ((Sint16) SDL_SwapBE16(src[7]));
|
|
|
- Sint32 last_sample6 = (Sint32) ((Sint16) SDL_SwapBE16(src[6]));
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint32 sample7 = (Sint32) ((Sint16) SDL_SwapBE16(src[7]));
|
|
|
- const Sint32 sample6 = (Sint32) ((Sint16) SDL_SwapBE16(src[6]));
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- src -= 8;
|
|
|
- dst[31] = (Sint16) ((sample7 + (3 * last_sample7)) >> 2);
|
|
|
- dst[30] = (Sint16) ((sample6 + (3 * last_sample6)) >> 2);
|
|
|
- dst[29] = (Sint16) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[28] = (Sint16) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[27] = (Sint16) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[26] = (Sint16) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[25] = (Sint16) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[24] = (Sint16) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[23] = (Sint16) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[22] = (Sint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[21] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[20] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[19] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[18] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[17] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[16] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[15] = (Sint16) (((3 * sample7) + last_sample7) >> 2);
|
|
|
- dst[14] = (Sint16) (((3 * sample6) + last_sample6) >> 2);
|
|
|
- dst[13] = (Sint16) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[12] = (Sint16) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[11] = (Sint16) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[10] = (Sint16) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[9] = (Sint16) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[8] = (Sint16) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[7] = (Sint16) sample7;
|
|
|
- dst[6] = (Sint16) sample6;
|
|
|
- dst[5] = (Sint16) sample5;
|
|
|
- dst[4] = (Sint16) sample4;
|
|
|
- dst[3] = (Sint16) sample3;
|
|
|
- dst[2] = (Sint16) sample2;
|
|
|
- dst[1] = (Sint16) sample1;
|
|
|
- dst[0] = (Sint16) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 32;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S16MSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S16MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint16 *dst = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *src = (Sint16 *) cvt->buf;
|
|
|
- const Sint16 *target = (const Sint16 *) (cvt->buf + dstsize);
|
|
|
- Sint32 last_sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- Sint32 last_sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- Sint32 last_sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- Sint32 last_sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- Sint32 last_sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- Sint32 last_sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- Sint32 last_sample6 = (Sint32) ((Sint16) SDL_SwapBE16(src[6]));
|
|
|
- Sint32 last_sample7 = (Sint32) ((Sint16) SDL_SwapBE16(src[7]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint32 sample0 = (Sint32) ((Sint16) SDL_SwapBE16(src[0]));
|
|
|
- const Sint32 sample1 = (Sint32) ((Sint16) SDL_SwapBE16(src[1]));
|
|
|
- const Sint32 sample2 = (Sint32) ((Sint16) SDL_SwapBE16(src[2]));
|
|
|
- const Sint32 sample3 = (Sint32) ((Sint16) SDL_SwapBE16(src[3]));
|
|
|
- const Sint32 sample4 = (Sint32) ((Sint16) SDL_SwapBE16(src[4]));
|
|
|
- const Sint32 sample5 = (Sint32) ((Sint16) SDL_SwapBE16(src[5]));
|
|
|
- const Sint32 sample6 = (Sint32) ((Sint16) SDL_SwapBE16(src[6]));
|
|
|
- const Sint32 sample7 = (Sint32) ((Sint16) SDL_SwapBE16(src[7]));
|
|
|
- src += 32;
|
|
|
- dst[0] = (Sint16) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint16) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint16) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint16) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint16) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint16) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Sint16) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Sint16) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S32LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 1 * 2;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- src--;
|
|
|
- dst[1] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S32LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- src += 2;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S32LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 1 * 4;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- src--;
|
|
|
- dst[3] = (Sint32) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[2] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S32LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- src += 4;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S32LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 2 * 2;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- src -= 2;
|
|
|
- dst[3] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S32LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- src += 4;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S32LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 2 * 4;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- src -= 2;
|
|
|
- dst[7] = (Sint32) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[6] = (Sint32) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[5] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Sint32) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[2] = (Sint32) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S32LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- src += 8;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S32LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 4 * 2;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- src -= 4;
|
|
|
- dst[7] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[6] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[5] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Sint32) sample3;
|
|
|
- dst[2] = (Sint32) sample2;
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S32LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- src += 8;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S32LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 4 * 4;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- src -= 4;
|
|
|
- dst[15] = (Sint32) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[14] = (Sint32) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[13] = (Sint32) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[12] = (Sint32) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[11] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Sint32) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[6] = (Sint32) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[5] = (Sint32) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[4] = (Sint32) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[3] = (Sint32) sample3;
|
|
|
- dst[2] = (Sint32) sample2;
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S32LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- src += 16;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S32LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 6 * 2;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- src -= 6;
|
|
|
- dst[11] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[10] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[9] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[8] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[7] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[6] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[5] = (Sint32) sample5;
|
|
|
- dst[4] = (Sint32) sample4;
|
|
|
- dst[3] = (Sint32) sample3;
|
|
|
- dst[2] = (Sint32) sample2;
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 12;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S32LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- src += 12;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S32LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 6 * 4;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- src -= 6;
|
|
|
- dst[23] = (Sint32) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[22] = (Sint32) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[21] = (Sint32) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[20] = (Sint32) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[19] = (Sint32) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[18] = (Sint32) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[17] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[16] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[15] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[14] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[13] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[12] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[11] = (Sint32) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[10] = (Sint32) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[9] = (Sint32) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[8] = (Sint32) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[7] = (Sint32) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[6] = (Sint32) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[5] = (Sint32) sample5;
|
|
|
- dst[4] = (Sint32) sample4;
|
|
|
- dst[3] = (Sint32) sample3;
|
|
|
- dst[2] = (Sint32) sample2;
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 24;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S32LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- src += 24;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S32LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 8 * 2;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample7 = (Sint64) ((Sint32) SDL_SwapLE32(src[7]));
|
|
|
- Sint64 last_sample6 = (Sint64) ((Sint32) SDL_SwapLE32(src[6]));
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample7 = (Sint64) ((Sint32) SDL_SwapLE32(src[7]));
|
|
|
- const Sint64 sample6 = (Sint64) ((Sint32) SDL_SwapLE32(src[6]));
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- src -= 8;
|
|
|
- dst[15] = (Sint32) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[14] = (Sint32) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[13] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[12] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[11] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Sint32) sample7;
|
|
|
- dst[6] = (Sint32) sample6;
|
|
|
- dst[5] = (Sint32) sample5;
|
|
|
- dst[4] = (Sint32) sample4;
|
|
|
- dst[3] = (Sint32) sample3;
|
|
|
- dst[2] = (Sint32) sample2;
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S32LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- Sint64 last_sample6 = (Sint64) ((Sint32) SDL_SwapLE32(src[6]));
|
|
|
- Sint64 last_sample7 = (Sint64) ((Sint32) SDL_SwapLE32(src[7]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- const Sint64 sample6 = (Sint64) ((Sint32) SDL_SwapLE32(src[6]));
|
|
|
- const Sint64 sample7 = (Sint64) ((Sint32) SDL_SwapLE32(src[7]));
|
|
|
- src += 16;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Sint32) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Sint32) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32LSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S32LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 8 * 4;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample7 = (Sint64) ((Sint32) SDL_SwapLE32(src[7]));
|
|
|
- Sint64 last_sample6 = (Sint64) ((Sint32) SDL_SwapLE32(src[6]));
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample7 = (Sint64) ((Sint32) SDL_SwapLE32(src[7]));
|
|
|
- const Sint64 sample6 = (Sint64) ((Sint32) SDL_SwapLE32(src[6]));
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- src -= 8;
|
|
|
- dst[31] = (Sint32) ((sample7 + (3 * last_sample7)) >> 2);
|
|
|
- dst[30] = (Sint32) ((sample6 + (3 * last_sample6)) >> 2);
|
|
|
- dst[29] = (Sint32) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[28] = (Sint32) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[27] = (Sint32) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[26] = (Sint32) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[25] = (Sint32) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[24] = (Sint32) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[23] = (Sint32) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[22] = (Sint32) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[21] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[20] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[19] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[18] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[17] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[16] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[15] = (Sint32) (((3 * sample7) + last_sample7) >> 2);
|
|
|
- dst[14] = (Sint32) (((3 * sample6) + last_sample6) >> 2);
|
|
|
- dst[13] = (Sint32) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[12] = (Sint32) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[11] = (Sint32) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[10] = (Sint32) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[9] = (Sint32) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[8] = (Sint32) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[7] = (Sint32) sample7;
|
|
|
- dst[6] = (Sint32) sample6;
|
|
|
- dst[5] = (Sint32) sample5;
|
|
|
- dst[4] = (Sint32) sample4;
|
|
|
- dst[3] = (Sint32) sample3;
|
|
|
- dst[2] = (Sint32) sample2;
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 32;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32LSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S32LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- Sint64 last_sample6 = (Sint64) ((Sint32) SDL_SwapLE32(src[6]));
|
|
|
- Sint64 last_sample7 = (Sint64) ((Sint32) SDL_SwapLE32(src[7]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapLE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapLE32(src[1]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapLE32(src[2]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapLE32(src[3]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapLE32(src[4]));
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapLE32(src[5]));
|
|
|
- const Sint64 sample6 = (Sint64) ((Sint32) SDL_SwapLE32(src[6]));
|
|
|
- const Sint64 sample7 = (Sint64) ((Sint32) SDL_SwapLE32(src[7]));
|
|
|
- src += 32;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Sint32) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Sint32) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S32MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 1 * 2;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- src--;
|
|
|
- dst[1] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S32MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- src += 2;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S32MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 1 * 4;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- src--;
|
|
|
- dst[3] = (Sint32) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[2] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S32MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- src += 4;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S32MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 2 * 2;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- src -= 2;
|
|
|
- dst[3] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S32MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- src += 4;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S32MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 2 * 4;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- src -= 2;
|
|
|
- dst[7] = (Sint32) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[6] = (Sint32) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[5] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Sint32) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[2] = (Sint32) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S32MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- src += 8;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S32MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 4 * 2;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- src -= 4;
|
|
|
- dst[7] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[6] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[5] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[4] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[3] = (Sint32) sample3;
|
|
|
- dst[2] = (Sint32) sample2;
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S32MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- src += 8;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S32MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 4 * 4;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- src -= 4;
|
|
|
- dst[15] = (Sint32) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[14] = (Sint32) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[13] = (Sint32) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[12] = (Sint32) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[11] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Sint32) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[6] = (Sint32) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[5] = (Sint32) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[4] = (Sint32) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[3] = (Sint32) sample3;
|
|
|
- dst[2] = (Sint32) sample2;
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S32MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- src += 16;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S32MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 6 * 2;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- src -= 6;
|
|
|
- dst[11] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[10] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[9] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[8] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[7] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[6] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[5] = (Sint32) sample5;
|
|
|
- dst[4] = (Sint32) sample4;
|
|
|
- dst[3] = (Sint32) sample3;
|
|
|
- dst[2] = (Sint32) sample2;
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 12;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S32MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- src += 12;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S32MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 6 * 4;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- src -= 6;
|
|
|
- dst[23] = (Sint32) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[22] = (Sint32) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[21] = (Sint32) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[20] = (Sint32) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[19] = (Sint32) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[18] = (Sint32) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[17] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[16] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[15] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[14] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[13] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[12] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[11] = (Sint32) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[10] = (Sint32) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[9] = (Sint32) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[8] = (Sint32) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[7] = (Sint32) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[6] = (Sint32) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[5] = (Sint32) sample5;
|
|
|
- dst[4] = (Sint32) sample4;
|
|
|
- dst[3] = (Sint32) sample3;
|
|
|
- dst[2] = (Sint32) sample2;
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 24;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S32MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- src += 24;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_S32MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 8 * 2;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample7 = (Sint64) ((Sint32) SDL_SwapBE32(src[7]));
|
|
|
- Sint64 last_sample6 = (Sint64) ((Sint32) SDL_SwapBE32(src[6]));
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample7 = (Sint64) ((Sint32) SDL_SwapBE32(src[7]));
|
|
|
- const Sint64 sample6 = (Sint64) ((Sint32) SDL_SwapBE32(src[6]));
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- src -= 8;
|
|
|
- dst[15] = (Sint32) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[14] = (Sint32) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[13] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[12] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[11] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[10] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[9] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[8] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[7] = (Sint32) sample7;
|
|
|
- dst[6] = (Sint32) sample6;
|
|
|
- dst[5] = (Sint32) sample5;
|
|
|
- dst[4] = (Sint32) sample4;
|
|
|
- dst[3] = (Sint32) sample3;
|
|
|
- dst[2] = (Sint32) sample2;
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_S32MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- Sint64 last_sample6 = (Sint64) ((Sint32) SDL_SwapBE32(src[6]));
|
|
|
- Sint64 last_sample7 = (Sint64) ((Sint32) SDL_SwapBE32(src[7]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- const Sint64 sample6 = (Sint64) ((Sint32) SDL_SwapBE32(src[6]));
|
|
|
- const Sint64 sample7 = (Sint64) ((Sint32) SDL_SwapBE32(src[7]));
|
|
|
- src += 16;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Sint32) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Sint32) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_S32MSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_S32MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- Sint32 *dst = ((Sint32 *) (cvt->buf + dstsize)) - 8 * 4;
|
|
|
- const Sint32 *src = ((Sint32 *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const Sint32 *target = ((const Sint32 *) cvt->buf);
|
|
|
- Sint64 last_sample7 = (Sint64) ((Sint32) SDL_SwapBE32(src[7]));
|
|
|
- Sint64 last_sample6 = (Sint64) ((Sint32) SDL_SwapBE32(src[6]));
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- while (dst >= target) {
|
|
|
- const Sint64 sample7 = (Sint64) ((Sint32) SDL_SwapBE32(src[7]));
|
|
|
- const Sint64 sample6 = (Sint64) ((Sint32) SDL_SwapBE32(src[6]));
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- src -= 8;
|
|
|
- dst[31] = (Sint32) ((sample7 + (3 * last_sample7)) >> 2);
|
|
|
- dst[30] = (Sint32) ((sample6 + (3 * last_sample6)) >> 2);
|
|
|
- dst[29] = (Sint32) ((sample5 + (3 * last_sample5)) >> 2);
|
|
|
- dst[28] = (Sint32) ((sample4 + (3 * last_sample4)) >> 2);
|
|
|
- dst[27] = (Sint32) ((sample3 + (3 * last_sample3)) >> 2);
|
|
|
- dst[26] = (Sint32) ((sample2 + (3 * last_sample2)) >> 2);
|
|
|
- dst[25] = (Sint32) ((sample1 + (3 * last_sample1)) >> 2);
|
|
|
- dst[24] = (Sint32) ((sample0 + (3 * last_sample0)) >> 2);
|
|
|
- dst[23] = (Sint32) ((sample7 + last_sample7) >> 1);
|
|
|
- dst[22] = (Sint32) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[21] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[20] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[19] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[18] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[17] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[16] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[15] = (Sint32) (((3 * sample7) + last_sample7) >> 2);
|
|
|
- dst[14] = (Sint32) (((3 * sample6) + last_sample6) >> 2);
|
|
|
- dst[13] = (Sint32) (((3 * sample5) + last_sample5) >> 2);
|
|
|
- dst[12] = (Sint32) (((3 * sample4) + last_sample4) >> 2);
|
|
|
- dst[11] = (Sint32) (((3 * sample3) + last_sample3) >> 2);
|
|
|
- dst[10] = (Sint32) (((3 * sample2) + last_sample2) >> 2);
|
|
|
- dst[9] = (Sint32) (((3 * sample1) + last_sample1) >> 2);
|
|
|
- dst[8] = (Sint32) (((3 * sample0) + last_sample0) >> 2);
|
|
|
- dst[7] = (Sint32) sample7;
|
|
|
- dst[6] = (Sint32) sample6;
|
|
|
- dst[5] = (Sint32) sample5;
|
|
|
- dst[4] = (Sint32) sample4;
|
|
|
- dst[3] = (Sint32) sample3;
|
|
|
- dst[2] = (Sint32) sample2;
|
|
|
- dst[1] = (Sint32) sample1;
|
|
|
- dst[0] = (Sint32) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 32;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_S32MSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_S32MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- Sint32 *dst = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *src = (Sint32 *) cvt->buf;
|
|
|
- const Sint32 *target = (const Sint32 *) (cvt->buf + dstsize);
|
|
|
- Sint64 last_sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- Sint64 last_sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- Sint64 last_sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- Sint64 last_sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- Sint64 last_sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- Sint64 last_sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- Sint64 last_sample6 = (Sint64) ((Sint32) SDL_SwapBE32(src[6]));
|
|
|
- Sint64 last_sample7 = (Sint64) ((Sint32) SDL_SwapBE32(src[7]));
|
|
|
- while (dst < target) {
|
|
|
- const Sint64 sample0 = (Sint64) ((Sint32) SDL_SwapBE32(src[0]));
|
|
|
- const Sint64 sample1 = (Sint64) ((Sint32) SDL_SwapBE32(src[1]));
|
|
|
- const Sint64 sample2 = (Sint64) ((Sint32) SDL_SwapBE32(src[2]));
|
|
|
- const Sint64 sample3 = (Sint64) ((Sint32) SDL_SwapBE32(src[3]));
|
|
|
- const Sint64 sample4 = (Sint64) ((Sint32) SDL_SwapBE32(src[4]));
|
|
|
- const Sint64 sample5 = (Sint64) ((Sint32) SDL_SwapBE32(src[5]));
|
|
|
- const Sint64 sample6 = (Sint64) ((Sint32) SDL_SwapBE32(src[6]));
|
|
|
- const Sint64 sample7 = (Sint64) ((Sint32) SDL_SwapBE32(src[7]));
|
|
|
- src += 32;
|
|
|
- dst[0] = (Sint32) ((sample0 + last_sample0) >> 1);
|
|
|
- dst[1] = (Sint32) ((sample1 + last_sample1) >> 1);
|
|
|
- dst[2] = (Sint32) ((sample2 + last_sample2) >> 1);
|
|
|
- dst[3] = (Sint32) ((sample3 + last_sample3) >> 1);
|
|
|
- dst[4] = (Sint32) ((sample4 + last_sample4) >> 1);
|
|
|
- dst[5] = (Sint32) ((sample5 + last_sample5) >> 1);
|
|
|
- dst[6] = (Sint32) ((sample6 + last_sample6) >> 1);
|
|
|
- dst[7] = (Sint32) ((sample7 + last_sample7) >> 1);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_F32LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 1 * 2;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- src--;
|
|
|
- dst[1] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_F32LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- src += 2;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_F32LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 1 * 4;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- src--;
|
|
|
- dst[3] = (float) ((sample0 + (3.0 * last_sample0)) * 0.25);
|
|
|
- dst[2] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) (((3.0 * sample0) + last_sample0) * 0.25);
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_F32LSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- src += 4;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_F32LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 2 * 2;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- src -= 2;
|
|
|
- dst[3] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[2] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_F32LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- src += 4;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_F32LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 2 * 4;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- src -= 2;
|
|
|
- dst[7] = (float) ((sample1 + (3.0 * last_sample1)) * 0.25);
|
|
|
- dst[6] = (float) ((sample0 + (3.0 * last_sample0)) * 0.25);
|
|
|
- dst[5] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[4] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[3] = (float) (((3.0 * sample1) + last_sample1) * 0.25);
|
|
|
- dst[2] = (float) (((3.0 * sample0) + last_sample0) * 0.25);
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_F32LSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- src += 8;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_F32LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 4 * 2;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- src -= 4;
|
|
|
- dst[7] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[6] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[5] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[4] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[3] = (float) sample3;
|
|
|
- dst[2] = (float) sample2;
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_F32LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- src += 8;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[2] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[3] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_F32LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 4 * 4;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- src -= 4;
|
|
|
- dst[15] = (float) ((sample3 + (3.0 * last_sample3)) * 0.25);
|
|
|
- dst[14] = (float) ((sample2 + (3.0 * last_sample2)) * 0.25);
|
|
|
- dst[13] = (float) ((sample1 + (3.0 * last_sample1)) * 0.25);
|
|
|
- dst[12] = (float) ((sample0 + (3.0 * last_sample0)) * 0.25);
|
|
|
- dst[11] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[10] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[9] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[8] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[7] = (float) (((3.0 * sample3) + last_sample3) * 0.25);
|
|
|
- dst[6] = (float) (((3.0 * sample2) + last_sample2) * 0.25);
|
|
|
- dst[5] = (float) (((3.0 * sample1) + last_sample1) * 0.25);
|
|
|
- dst[4] = (float) (((3.0 * sample0) + last_sample0) * 0.25);
|
|
|
- dst[3] = (float) sample3;
|
|
|
- dst[2] = (float) sample2;
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_F32LSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- src += 16;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[2] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[3] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_F32LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 6 * 2;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- src -= 6;
|
|
|
- dst[11] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- dst[10] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[9] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[8] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[7] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[6] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[5] = (float) sample5;
|
|
|
- dst[4] = (float) sample4;
|
|
|
- dst[3] = (float) sample3;
|
|
|
- dst[2] = (float) sample2;
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 12;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_F32LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- const double sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- src += 12;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[2] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[3] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[4] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[5] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_F32LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 6 * 4;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- src -= 6;
|
|
|
- dst[23] = (float) ((sample5 + (3.0 * last_sample5)) * 0.25);
|
|
|
- dst[22] = (float) ((sample4 + (3.0 * last_sample4)) * 0.25);
|
|
|
- dst[21] = (float) ((sample3 + (3.0 * last_sample3)) * 0.25);
|
|
|
- dst[20] = (float) ((sample2 + (3.0 * last_sample2)) * 0.25);
|
|
|
- dst[19] = (float) ((sample1 + (3.0 * last_sample1)) * 0.25);
|
|
|
- dst[18] = (float) ((sample0 + (3.0 * last_sample0)) * 0.25);
|
|
|
- dst[17] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- dst[16] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[15] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[14] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[13] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[12] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[11] = (float) (((3.0 * sample5) + last_sample5) * 0.25);
|
|
|
- dst[10] = (float) (((3.0 * sample4) + last_sample4) * 0.25);
|
|
|
- dst[9] = (float) (((3.0 * sample3) + last_sample3) * 0.25);
|
|
|
- dst[8] = (float) (((3.0 * sample2) + last_sample2) * 0.25);
|
|
|
- dst[7] = (float) (((3.0 * sample1) + last_sample1) * 0.25);
|
|
|
- dst[6] = (float) (((3.0 * sample0) + last_sample0) * 0.25);
|
|
|
- dst[5] = (float) sample5;
|
|
|
- dst[4] = (float) sample4;
|
|
|
- dst[3] = (float) sample3;
|
|
|
- dst[2] = (float) sample2;
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 24;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_F32LSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- const double sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- src += 24;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[2] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[3] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[4] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[5] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_F32LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 8 * 2;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample7 = (double) SDL_SwapFloatLE(src[7]);
|
|
|
- double last_sample6 = (double) SDL_SwapFloatLE(src[6]);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample7 = (double) SDL_SwapFloatLE(src[7]);
|
|
|
- const double sample6 = (double) SDL_SwapFloatLE(src[6]);
|
|
|
- const double sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- src -= 8;
|
|
|
- dst[15] = (float) ((sample7 + last_sample7) * 0.5);
|
|
|
- dst[14] = (float) ((sample6 + last_sample6) * 0.5);
|
|
|
- dst[13] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- dst[12] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[11] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[10] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[9] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[8] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[7] = (float) sample7;
|
|
|
- dst[6] = (float) sample6;
|
|
|
- dst[5] = (float) sample5;
|
|
|
- dst[4] = (float) sample4;
|
|
|
- dst[3] = (float) sample3;
|
|
|
- dst[2] = (float) sample2;
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_F32LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- double last_sample6 = (double) SDL_SwapFloatLE(src[6]);
|
|
|
- double last_sample7 = (double) SDL_SwapFloatLE(src[7]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- const double sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- const double sample6 = (double) SDL_SwapFloatLE(src[6]);
|
|
|
- const double sample7 = (double) SDL_SwapFloatLE(src[7]);
|
|
|
- src += 16;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[2] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[3] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[4] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[5] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- dst[6] = (float) ((sample6 + last_sample6) * 0.5);
|
|
|
- dst[7] = (float) ((sample7 + last_sample7) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32LSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_F32LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 8 * 4;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample7 = (double) SDL_SwapFloatLE(src[7]);
|
|
|
- double last_sample6 = (double) SDL_SwapFloatLE(src[6]);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample7 = (double) SDL_SwapFloatLE(src[7]);
|
|
|
- const double sample6 = (double) SDL_SwapFloatLE(src[6]);
|
|
|
- const double sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- src -= 8;
|
|
|
- dst[31] = (float) ((sample7 + (3.0 * last_sample7)) * 0.25);
|
|
|
- dst[30] = (float) ((sample6 + (3.0 * last_sample6)) * 0.25);
|
|
|
- dst[29] = (float) ((sample5 + (3.0 * last_sample5)) * 0.25);
|
|
|
- dst[28] = (float) ((sample4 + (3.0 * last_sample4)) * 0.25);
|
|
|
- dst[27] = (float) ((sample3 + (3.0 * last_sample3)) * 0.25);
|
|
|
- dst[26] = (float) ((sample2 + (3.0 * last_sample2)) * 0.25);
|
|
|
- dst[25] = (float) ((sample1 + (3.0 * last_sample1)) * 0.25);
|
|
|
- dst[24] = (float) ((sample0 + (3.0 * last_sample0)) * 0.25);
|
|
|
- dst[23] = (float) ((sample7 + last_sample7) * 0.5);
|
|
|
- dst[22] = (float) ((sample6 + last_sample6) * 0.5);
|
|
|
- dst[21] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- dst[20] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[19] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[18] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[17] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[16] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[15] = (float) (((3.0 * sample7) + last_sample7) * 0.25);
|
|
|
- dst[14] = (float) (((3.0 * sample6) + last_sample6) * 0.25);
|
|
|
- dst[13] = (float) (((3.0 * sample5) + last_sample5) * 0.25);
|
|
|
- dst[12] = (float) (((3.0 * sample4) + last_sample4) * 0.25);
|
|
|
- dst[11] = (float) (((3.0 * sample3) + last_sample3) * 0.25);
|
|
|
- dst[10] = (float) (((3.0 * sample2) + last_sample2) * 0.25);
|
|
|
- dst[9] = (float) (((3.0 * sample1) + last_sample1) * 0.25);
|
|
|
- dst[8] = (float) (((3.0 * sample0) + last_sample0) * 0.25);
|
|
|
- dst[7] = (float) sample7;
|
|
|
- dst[6] = (float) sample6;
|
|
|
- dst[5] = (float) sample5;
|
|
|
- dst[4] = (float) sample4;
|
|
|
- dst[3] = (float) sample3;
|
|
|
- dst[2] = (float) sample2;
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 32;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32LSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_F32LSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- double last_sample6 = (double) SDL_SwapFloatLE(src[6]);
|
|
|
- double last_sample7 = (double) SDL_SwapFloatLE(src[7]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatLE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatLE(src[1]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatLE(src[2]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatLE(src[3]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatLE(src[4]);
|
|
|
- const double sample5 = (double) SDL_SwapFloatLE(src[5]);
|
|
|
- const double sample6 = (double) SDL_SwapFloatLE(src[6]);
|
|
|
- const double sample7 = (double) SDL_SwapFloatLE(src[7]);
|
|
|
- src += 32;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[2] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[3] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[4] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[5] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- dst[6] = (float) ((sample6 + last_sample6) * 0.5);
|
|
|
- dst[7] = (float) ((sample7 + last_sample7) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_F32MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 1 * 2;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- src--;
|
|
|
- dst[1] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_1c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_F32MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- src += 2;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_F32MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 1 * 4;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 1;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- src--;
|
|
|
- dst[3] = (float) ((sample0 + (3.0 * last_sample0)) * 0.25);
|
|
|
- dst[2] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) (((3.0 * sample0) + last_sample0) * 0.25);
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_1c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_F32MSB, 1 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- src += 4;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- dst++;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_F32MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 2 * 2;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- src -= 2;
|
|
|
- dst[3] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[2] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_2c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_F32MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- src += 4;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_F32MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 2 * 4;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 2;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- src -= 2;
|
|
|
- dst[7] = (float) ((sample1 + (3.0 * last_sample1)) * 0.25);
|
|
|
- dst[6] = (float) ((sample0 + (3.0 * last_sample0)) * 0.25);
|
|
|
- dst[5] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[4] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[3] = (float) (((3.0 * sample1) + last_sample1) * 0.25);
|
|
|
- dst[2] = (float) (((3.0 * sample0) + last_sample0) * 0.25);
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_2c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_F32MSB, 2 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- src += 8;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- dst += 2;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_F32MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 4 * 2;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- src -= 4;
|
|
|
- dst[7] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[6] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[5] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[4] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[3] = (float) sample3;
|
|
|
- dst[2] = (float) sample2;
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_4c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_F32MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- src += 8;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[2] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[3] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_F32MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 4 * 4;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 4;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- src -= 4;
|
|
|
- dst[15] = (float) ((sample3 + (3.0 * last_sample3)) * 0.25);
|
|
|
- dst[14] = (float) ((sample2 + (3.0 * last_sample2)) * 0.25);
|
|
|
- dst[13] = (float) ((sample1 + (3.0 * last_sample1)) * 0.25);
|
|
|
- dst[12] = (float) ((sample0 + (3.0 * last_sample0)) * 0.25);
|
|
|
- dst[11] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[10] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[9] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[8] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[7] = (float) (((3.0 * sample3) + last_sample3) * 0.25);
|
|
|
- dst[6] = (float) (((3.0 * sample2) + last_sample2) * 0.25);
|
|
|
- dst[5] = (float) (((3.0 * sample1) + last_sample1) * 0.25);
|
|
|
- dst[4] = (float) (((3.0 * sample0) + last_sample0) * 0.25);
|
|
|
- dst[3] = (float) sample3;
|
|
|
- dst[2] = (float) sample2;
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_4c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_F32MSB, 4 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- src += 16;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[2] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[3] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- dst += 4;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_F32MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 6 * 2;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- src -= 6;
|
|
|
- dst[11] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- dst[10] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[9] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[8] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[7] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[6] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[5] = (float) sample5;
|
|
|
- dst[4] = (float) sample4;
|
|
|
- dst[3] = (float) sample3;
|
|
|
- dst[2] = (float) sample2;
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 12;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_6c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_F32MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- const double sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- src += 12;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[2] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[3] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[4] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[5] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_F32MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 6 * 4;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 6;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- src -= 6;
|
|
|
- dst[23] = (float) ((sample5 + (3.0 * last_sample5)) * 0.25);
|
|
|
- dst[22] = (float) ((sample4 + (3.0 * last_sample4)) * 0.25);
|
|
|
- dst[21] = (float) ((sample3 + (3.0 * last_sample3)) * 0.25);
|
|
|
- dst[20] = (float) ((sample2 + (3.0 * last_sample2)) * 0.25);
|
|
|
- dst[19] = (float) ((sample1 + (3.0 * last_sample1)) * 0.25);
|
|
|
- dst[18] = (float) ((sample0 + (3.0 * last_sample0)) * 0.25);
|
|
|
- dst[17] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- dst[16] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[15] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[14] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[13] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[12] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[11] = (float) (((3.0 * sample5) + last_sample5) * 0.25);
|
|
|
- dst[10] = (float) (((3.0 * sample4) + last_sample4) * 0.25);
|
|
|
- dst[9] = (float) (((3.0 * sample3) + last_sample3) * 0.25);
|
|
|
- dst[8] = (float) (((3.0 * sample2) + last_sample2) * 0.25);
|
|
|
- dst[7] = (float) (((3.0 * sample1) + last_sample1) * 0.25);
|
|
|
- dst[6] = (float) (((3.0 * sample0) + last_sample0) * 0.25);
|
|
|
- dst[5] = (float) sample5;
|
|
|
- dst[4] = (float) sample4;
|
|
|
- dst[3] = (float) sample3;
|
|
|
- dst[2] = (float) sample2;
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 24;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_6c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_F32MSB, 6 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- const double sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- src += 24;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[2] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[3] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[4] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[5] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- dst += 6;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x2) AUDIO_F32MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 2;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 8 * 2;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample7 = (double) SDL_SwapFloatBE(src[7]);
|
|
|
- double last_sample6 = (double) SDL_SwapFloatBE(src[6]);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample7 = (double) SDL_SwapFloatBE(src[7]);
|
|
|
- const double sample6 = (double) SDL_SwapFloatBE(src[6]);
|
|
|
- const double sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- src -= 8;
|
|
|
- dst[15] = (float) ((sample7 + last_sample7) * 0.5);
|
|
|
- dst[14] = (float) ((sample6 + last_sample6) * 0.5);
|
|
|
- dst[13] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- dst[12] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[11] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[10] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[9] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[8] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[7] = (float) sample7;
|
|
|
- dst[6] = (float) sample6;
|
|
|
- dst[5] = (float) sample5;
|
|
|
- dst[4] = (float) sample4;
|
|
|
- dst[3] = (float) sample3;
|
|
|
- dst[2] = (float) sample2;
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 16;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_8c_x2(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x2) AUDIO_F32MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 2;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- double last_sample6 = (double) SDL_SwapFloatBE(src[6]);
|
|
|
- double last_sample7 = (double) SDL_SwapFloatBE(src[7]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- const double sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- const double sample6 = (double) SDL_SwapFloatBE(src[6]);
|
|
|
- const double sample7 = (double) SDL_SwapFloatBE(src[7]);
|
|
|
- src += 16;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[2] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[3] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[4] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[5] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- dst[6] = (float) ((sample6 + last_sample6) * 0.5);
|
|
|
- dst[7] = (float) ((sample7 + last_sample7) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Upsample_F32MSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Upsample (x4) AUDIO_F32MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt * 4;
|
|
|
- float *dst = ((float *) (cvt->buf + dstsize)) - 8 * 4;
|
|
|
- const float *src = ((float *) (cvt->buf + cvt->len_cvt)) - 8;
|
|
|
- const float *target = ((const float *) cvt->buf);
|
|
|
- double last_sample7 = (double) SDL_SwapFloatBE(src[7]);
|
|
|
- double last_sample6 = (double) SDL_SwapFloatBE(src[6]);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- while (dst >= target) {
|
|
|
- const double sample7 = (double) SDL_SwapFloatBE(src[7]);
|
|
|
- const double sample6 = (double) SDL_SwapFloatBE(src[6]);
|
|
|
- const double sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- src -= 8;
|
|
|
- dst[31] = (float) ((sample7 + (3.0 * last_sample7)) * 0.25);
|
|
|
- dst[30] = (float) ((sample6 + (3.0 * last_sample6)) * 0.25);
|
|
|
- dst[29] = (float) ((sample5 + (3.0 * last_sample5)) * 0.25);
|
|
|
- dst[28] = (float) ((sample4 + (3.0 * last_sample4)) * 0.25);
|
|
|
- dst[27] = (float) ((sample3 + (3.0 * last_sample3)) * 0.25);
|
|
|
- dst[26] = (float) ((sample2 + (3.0 * last_sample2)) * 0.25);
|
|
|
- dst[25] = (float) ((sample1 + (3.0 * last_sample1)) * 0.25);
|
|
|
- dst[24] = (float) ((sample0 + (3.0 * last_sample0)) * 0.25);
|
|
|
- dst[23] = (float) ((sample7 + last_sample7) * 0.5);
|
|
|
- dst[22] = (float) ((sample6 + last_sample6) * 0.5);
|
|
|
- dst[21] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- dst[20] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[19] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[18] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[17] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[16] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[15] = (float) (((3.0 * sample7) + last_sample7) * 0.25);
|
|
|
- dst[14] = (float) (((3.0 * sample6) + last_sample6) * 0.25);
|
|
|
- dst[13] = (float) (((3.0 * sample5) + last_sample5) * 0.25);
|
|
|
- dst[12] = (float) (((3.0 * sample4) + last_sample4) * 0.25);
|
|
|
- dst[11] = (float) (((3.0 * sample3) + last_sample3) * 0.25);
|
|
|
- dst[10] = (float) (((3.0 * sample2) + last_sample2) * 0.25);
|
|
|
- dst[9] = (float) (((3.0 * sample1) + last_sample1) * 0.25);
|
|
|
- dst[8] = (float) (((3.0 * sample0) + last_sample0) * 0.25);
|
|
|
- dst[7] = (float) sample7;
|
|
|
- dst[6] = (float) sample6;
|
|
|
- dst[5] = (float) sample5;
|
|
|
- dst[4] = (float) sample4;
|
|
|
- dst[3] = (float) sample3;
|
|
|
- dst[2] = (float) sample2;
|
|
|
- dst[1] = (float) sample1;
|
|
|
- dst[0] = (float) sample0;
|
|
|
- last_sample7 = sample7;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample0 = sample0;
|
|
|
- dst -= 32;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void SDLCALL
|
|
|
-SDL_Downsample_F32MSB_8c_x4(SDL_AudioCVT * cvt, SDL_AudioFormat format)
|
|
|
-{
|
|
|
-#if DEBUG_CONVERT
|
|
|
- fprintf(stderr, "Downsample (x4) AUDIO_F32MSB, 8 channels.\n");
|
|
|
-#endif
|
|
|
-
|
|
|
- const int dstsize = cvt->len_cvt / 4;
|
|
|
- float *dst = (float *) cvt->buf;
|
|
|
- const float *src = (float *) cvt->buf;
|
|
|
- const float *target = (const float *) (cvt->buf + dstsize);
|
|
|
- double last_sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- double last_sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- double last_sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- double last_sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- double last_sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- double last_sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- double last_sample6 = (double) SDL_SwapFloatBE(src[6]);
|
|
|
- double last_sample7 = (double) SDL_SwapFloatBE(src[7]);
|
|
|
- while (dst < target) {
|
|
|
- const double sample0 = (double) SDL_SwapFloatBE(src[0]);
|
|
|
- const double sample1 = (double) SDL_SwapFloatBE(src[1]);
|
|
|
- const double sample2 = (double) SDL_SwapFloatBE(src[2]);
|
|
|
- const double sample3 = (double) SDL_SwapFloatBE(src[3]);
|
|
|
- const double sample4 = (double) SDL_SwapFloatBE(src[4]);
|
|
|
- const double sample5 = (double) SDL_SwapFloatBE(src[5]);
|
|
|
- const double sample6 = (double) SDL_SwapFloatBE(src[6]);
|
|
|
- const double sample7 = (double) SDL_SwapFloatBE(src[7]);
|
|
|
- src += 32;
|
|
|
- dst[0] = (float) ((sample0 + last_sample0) * 0.5);
|
|
|
- dst[1] = (float) ((sample1 + last_sample1) * 0.5);
|
|
|
- dst[2] = (float) ((sample2 + last_sample2) * 0.5);
|
|
|
- dst[3] = (float) ((sample3 + last_sample3) * 0.5);
|
|
|
- dst[4] = (float) ((sample4 + last_sample4) * 0.5);
|
|
|
- dst[5] = (float) ((sample5 + last_sample5) * 0.5);
|
|
|
- dst[6] = (float) ((sample6 + last_sample6) * 0.5);
|
|
|
- dst[7] = (float) ((sample7 + last_sample7) * 0.5);
|
|
|
- last_sample0 = sample0;
|
|
|
- last_sample1 = sample1;
|
|
|
- last_sample2 = sample2;
|
|
|
- last_sample3 = sample3;
|
|
|
- last_sample4 = sample4;
|
|
|
- last_sample5 = sample5;
|
|
|
- last_sample6 = sample6;
|
|
|
- last_sample7 = sample7;
|
|
|
- dst += 8;
|
|
|
- }
|
|
|
-
|
|
|
- cvt->len_cvt = dstsize;
|
|
|
- if (cvt->filters[++cvt->filter_index]) {
|
|
|
- cvt->filters[cvt->filter_index] (cvt, format);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-#endif /* !LESS_RESAMPLERS */
|
|
|
-#endif /* !NO_RESAMPLERS */
|
|
|
-
|
|
|
-
|
|
|
-const SDL_AudioRateFilters sdl_audio_rate_filters[] =
|
|
|
-{
|
|
|
-#if !NO_RESAMPLERS
|
|
|
- { AUDIO_U8, 1, 0, 0, SDL_Downsample_U8_1c },
|
|
|
- { AUDIO_U8, 1, 1, 0, SDL_Upsample_U8_1c },
|
|
|
- { AUDIO_U8, 2, 0, 0, SDL_Downsample_U8_2c },
|
|
|
- { AUDIO_U8, 2, 1, 0, SDL_Upsample_U8_2c },
|
|
|
- { AUDIO_U8, 4, 0, 0, SDL_Downsample_U8_4c },
|
|
|
- { AUDIO_U8, 4, 1, 0, SDL_Upsample_U8_4c },
|
|
|
- { AUDIO_U8, 6, 0, 0, SDL_Downsample_U8_6c },
|
|
|
- { AUDIO_U8, 6, 1, 0, SDL_Upsample_U8_6c },
|
|
|
- { AUDIO_U8, 8, 0, 0, SDL_Downsample_U8_8c },
|
|
|
- { AUDIO_U8, 8, 1, 0, SDL_Upsample_U8_8c },
|
|
|
- { AUDIO_S8, 1, 0, 0, SDL_Downsample_S8_1c },
|
|
|
- { AUDIO_S8, 1, 1, 0, SDL_Upsample_S8_1c },
|
|
|
- { AUDIO_S8, 2, 0, 0, SDL_Downsample_S8_2c },
|
|
|
- { AUDIO_S8, 2, 1, 0, SDL_Upsample_S8_2c },
|
|
|
- { AUDIO_S8, 4, 0, 0, SDL_Downsample_S8_4c },
|
|
|
- { AUDIO_S8, 4, 1, 0, SDL_Upsample_S8_4c },
|
|
|
- { AUDIO_S8, 6, 0, 0, SDL_Downsample_S8_6c },
|
|
|
- { AUDIO_S8, 6, 1, 0, SDL_Upsample_S8_6c },
|
|
|
- { AUDIO_S8, 8, 0, 0, SDL_Downsample_S8_8c },
|
|
|
- { AUDIO_S8, 8, 1, 0, SDL_Upsample_S8_8c },
|
|
|
- { AUDIO_U16LSB, 1, 0, 0, SDL_Downsample_U16LSB_1c },
|
|
|
- { AUDIO_U16LSB, 1, 1, 0, SDL_Upsample_U16LSB_1c },
|
|
|
- { AUDIO_U16LSB, 2, 0, 0, SDL_Downsample_U16LSB_2c },
|
|
|
- { AUDIO_U16LSB, 2, 1, 0, SDL_Upsample_U16LSB_2c },
|
|
|
- { AUDIO_U16LSB, 4, 0, 0, SDL_Downsample_U16LSB_4c },
|
|
|
- { AUDIO_U16LSB, 4, 1, 0, SDL_Upsample_U16LSB_4c },
|
|
|
- { AUDIO_U16LSB, 6, 0, 0, SDL_Downsample_U16LSB_6c },
|
|
|
- { AUDIO_U16LSB, 6, 1, 0, SDL_Upsample_U16LSB_6c },
|
|
|
- { AUDIO_U16LSB, 8, 0, 0, SDL_Downsample_U16LSB_8c },
|
|
|
- { AUDIO_U16LSB, 8, 1, 0, SDL_Upsample_U16LSB_8c },
|
|
|
- { AUDIO_S16LSB, 1, 0, 0, SDL_Downsample_S16LSB_1c },
|
|
|
- { AUDIO_S16LSB, 1, 1, 0, SDL_Upsample_S16LSB_1c },
|
|
|
- { AUDIO_S16LSB, 2, 0, 0, SDL_Downsample_S16LSB_2c },
|
|
|
- { AUDIO_S16LSB, 2, 1, 0, SDL_Upsample_S16LSB_2c },
|
|
|
- { AUDIO_S16LSB, 4, 0, 0, SDL_Downsample_S16LSB_4c },
|
|
|
- { AUDIO_S16LSB, 4, 1, 0, SDL_Upsample_S16LSB_4c },
|
|
|
- { AUDIO_S16LSB, 6, 0, 0, SDL_Downsample_S16LSB_6c },
|
|
|
- { AUDIO_S16LSB, 6, 1, 0, SDL_Upsample_S16LSB_6c },
|
|
|
- { AUDIO_S16LSB, 8, 0, 0, SDL_Downsample_S16LSB_8c },
|
|
|
- { AUDIO_S16LSB, 8, 1, 0, SDL_Upsample_S16LSB_8c },
|
|
|
- { AUDIO_U16MSB, 1, 0, 0, SDL_Downsample_U16MSB_1c },
|
|
|
- { AUDIO_U16MSB, 1, 1, 0, SDL_Upsample_U16MSB_1c },
|
|
|
- { AUDIO_U16MSB, 2, 0, 0, SDL_Downsample_U16MSB_2c },
|
|
|
- { AUDIO_U16MSB, 2, 1, 0, SDL_Upsample_U16MSB_2c },
|
|
|
- { AUDIO_U16MSB, 4, 0, 0, SDL_Downsample_U16MSB_4c },
|
|
|
- { AUDIO_U16MSB, 4, 1, 0, SDL_Upsample_U16MSB_4c },
|
|
|
- { AUDIO_U16MSB, 6, 0, 0, SDL_Downsample_U16MSB_6c },
|
|
|
- { AUDIO_U16MSB, 6, 1, 0, SDL_Upsample_U16MSB_6c },
|
|
|
- { AUDIO_U16MSB, 8, 0, 0, SDL_Downsample_U16MSB_8c },
|
|
|
- { AUDIO_U16MSB, 8, 1, 0, SDL_Upsample_U16MSB_8c },
|
|
|
- { AUDIO_S16MSB, 1, 0, 0, SDL_Downsample_S16MSB_1c },
|
|
|
- { AUDIO_S16MSB, 1, 1, 0, SDL_Upsample_S16MSB_1c },
|
|
|
- { AUDIO_S16MSB, 2, 0, 0, SDL_Downsample_S16MSB_2c },
|
|
|
- { AUDIO_S16MSB, 2, 1, 0, SDL_Upsample_S16MSB_2c },
|
|
|
- { AUDIO_S16MSB, 4, 0, 0, SDL_Downsample_S16MSB_4c },
|
|
|
- { AUDIO_S16MSB, 4, 1, 0, SDL_Upsample_S16MSB_4c },
|
|
|
- { AUDIO_S16MSB, 6, 0, 0, SDL_Downsample_S16MSB_6c },
|
|
|
- { AUDIO_S16MSB, 6, 1, 0, SDL_Upsample_S16MSB_6c },
|
|
|
- { AUDIO_S16MSB, 8, 0, 0, SDL_Downsample_S16MSB_8c },
|
|
|
- { AUDIO_S16MSB, 8, 1, 0, SDL_Upsample_S16MSB_8c },
|
|
|
- { AUDIO_S32LSB, 1, 0, 0, SDL_Downsample_S32LSB_1c },
|
|
|
- { AUDIO_S32LSB, 1, 1, 0, SDL_Upsample_S32LSB_1c },
|
|
|
- { AUDIO_S32LSB, 2, 0, 0, SDL_Downsample_S32LSB_2c },
|
|
|
- { AUDIO_S32LSB, 2, 1, 0, SDL_Upsample_S32LSB_2c },
|
|
|
- { AUDIO_S32LSB, 4, 0, 0, SDL_Downsample_S32LSB_4c },
|
|
|
- { AUDIO_S32LSB, 4, 1, 0, SDL_Upsample_S32LSB_4c },
|
|
|
- { AUDIO_S32LSB, 6, 0, 0, SDL_Downsample_S32LSB_6c },
|
|
|
- { AUDIO_S32LSB, 6, 1, 0, SDL_Upsample_S32LSB_6c },
|
|
|
- { AUDIO_S32LSB, 8, 0, 0, SDL_Downsample_S32LSB_8c },
|
|
|
- { AUDIO_S32LSB, 8, 1, 0, SDL_Upsample_S32LSB_8c },
|
|
|
- { AUDIO_S32MSB, 1, 0, 0, SDL_Downsample_S32MSB_1c },
|
|
|
- { AUDIO_S32MSB, 1, 1, 0, SDL_Upsample_S32MSB_1c },
|
|
|
- { AUDIO_S32MSB, 2, 0, 0, SDL_Downsample_S32MSB_2c },
|
|
|
- { AUDIO_S32MSB, 2, 1, 0, SDL_Upsample_S32MSB_2c },
|
|
|
- { AUDIO_S32MSB, 4, 0, 0, SDL_Downsample_S32MSB_4c },
|
|
|
- { AUDIO_S32MSB, 4, 1, 0, SDL_Upsample_S32MSB_4c },
|
|
|
- { AUDIO_S32MSB, 6, 0, 0, SDL_Downsample_S32MSB_6c },
|
|
|
- { AUDIO_S32MSB, 6, 1, 0, SDL_Upsample_S32MSB_6c },
|
|
|
- { AUDIO_S32MSB, 8, 0, 0, SDL_Downsample_S32MSB_8c },
|
|
|
- { AUDIO_S32MSB, 8, 1, 0, SDL_Upsample_S32MSB_8c },
|
|
|
- { AUDIO_F32LSB, 1, 0, 0, SDL_Downsample_F32LSB_1c },
|
|
|
- { AUDIO_F32LSB, 1, 1, 0, SDL_Upsample_F32LSB_1c },
|
|
|
- { AUDIO_F32LSB, 2, 0, 0, SDL_Downsample_F32LSB_2c },
|
|
|
- { AUDIO_F32LSB, 2, 1, 0, SDL_Upsample_F32LSB_2c },
|
|
|
- { AUDIO_F32LSB, 4, 0, 0, SDL_Downsample_F32LSB_4c },
|
|
|
- { AUDIO_F32LSB, 4, 1, 0, SDL_Upsample_F32LSB_4c },
|
|
|
- { AUDIO_F32LSB, 6, 0, 0, SDL_Downsample_F32LSB_6c },
|
|
|
- { AUDIO_F32LSB, 6, 1, 0, SDL_Upsample_F32LSB_6c },
|
|
|
- { AUDIO_F32LSB, 8, 0, 0, SDL_Downsample_F32LSB_8c },
|
|
|
- { AUDIO_F32LSB, 8, 1, 0, SDL_Upsample_F32LSB_8c },
|
|
|
- { AUDIO_F32MSB, 1, 0, 0, SDL_Downsample_F32MSB_1c },
|
|
|
- { AUDIO_F32MSB, 1, 1, 0, SDL_Upsample_F32MSB_1c },
|
|
|
- { AUDIO_F32MSB, 2, 0, 0, SDL_Downsample_F32MSB_2c },
|
|
|
- { AUDIO_F32MSB, 2, 1, 0, SDL_Upsample_F32MSB_2c },
|
|
|
- { AUDIO_F32MSB, 4, 0, 0, SDL_Downsample_F32MSB_4c },
|
|
|
- { AUDIO_F32MSB, 4, 1, 0, SDL_Upsample_F32MSB_4c },
|
|
|
- { AUDIO_F32MSB, 6, 0, 0, SDL_Downsample_F32MSB_6c },
|
|
|
- { AUDIO_F32MSB, 6, 1, 0, SDL_Upsample_F32MSB_6c },
|
|
|
- { AUDIO_F32MSB, 8, 0, 0, SDL_Downsample_F32MSB_8c },
|
|
|
- { AUDIO_F32MSB, 8, 1, 0, SDL_Upsample_F32MSB_8c },
|
|
|
-#if !LESS_RESAMPLERS
|
|
|
- { AUDIO_U8, 1, 0, 2, SDL_Downsample_U8_1c_x2 },
|
|
|
- { AUDIO_U8, 1, 1, 2, SDL_Upsample_U8_1c_x2 },
|
|
|
- { AUDIO_U8, 1, 0, 4, SDL_Downsample_U8_1c_x4 },
|
|
|
- { AUDIO_U8, 1, 1, 4, SDL_Upsample_U8_1c_x4 },
|
|
|
- { AUDIO_U8, 2, 0, 2, SDL_Downsample_U8_2c_x2 },
|
|
|
- { AUDIO_U8, 2, 1, 2, SDL_Upsample_U8_2c_x2 },
|
|
|
- { AUDIO_U8, 2, 0, 4, SDL_Downsample_U8_2c_x4 },
|
|
|
- { AUDIO_U8, 2, 1, 4, SDL_Upsample_U8_2c_x4 },
|
|
|
- { AUDIO_U8, 4, 0, 2, SDL_Downsample_U8_4c_x2 },
|
|
|
- { AUDIO_U8, 4, 1, 2, SDL_Upsample_U8_4c_x2 },
|
|
|
- { AUDIO_U8, 4, 0, 4, SDL_Downsample_U8_4c_x4 },
|
|
|
- { AUDIO_U8, 4, 1, 4, SDL_Upsample_U8_4c_x4 },
|
|
|
- { AUDIO_U8, 6, 0, 2, SDL_Downsample_U8_6c_x2 },
|
|
|
- { AUDIO_U8, 6, 1, 2, SDL_Upsample_U8_6c_x2 },
|
|
|
- { AUDIO_U8, 6, 0, 4, SDL_Downsample_U8_6c_x4 },
|
|
|
- { AUDIO_U8, 6, 1, 4, SDL_Upsample_U8_6c_x4 },
|
|
|
- { AUDIO_U8, 8, 0, 2, SDL_Downsample_U8_8c_x2 },
|
|
|
- { AUDIO_U8, 8, 1, 2, SDL_Upsample_U8_8c_x2 },
|
|
|
- { AUDIO_U8, 8, 0, 4, SDL_Downsample_U8_8c_x4 },
|
|
|
- { AUDIO_U8, 8, 1, 4, SDL_Upsample_U8_8c_x4 },
|
|
|
- { AUDIO_S8, 1, 0, 2, SDL_Downsample_S8_1c_x2 },
|
|
|
- { AUDIO_S8, 1, 1, 2, SDL_Upsample_S8_1c_x2 },
|
|
|
- { AUDIO_S8, 1, 0, 4, SDL_Downsample_S8_1c_x4 },
|
|
|
- { AUDIO_S8, 1, 1, 4, SDL_Upsample_S8_1c_x4 },
|
|
|
- { AUDIO_S8, 2, 0, 2, SDL_Downsample_S8_2c_x2 },
|
|
|
- { AUDIO_S8, 2, 1, 2, SDL_Upsample_S8_2c_x2 },
|
|
|
- { AUDIO_S8, 2, 0, 4, SDL_Downsample_S8_2c_x4 },
|
|
|
- { AUDIO_S8, 2, 1, 4, SDL_Upsample_S8_2c_x4 },
|
|
|
- { AUDIO_S8, 4, 0, 2, SDL_Downsample_S8_4c_x2 },
|
|
|
- { AUDIO_S8, 4, 1, 2, SDL_Upsample_S8_4c_x2 },
|
|
|
- { AUDIO_S8, 4, 0, 4, SDL_Downsample_S8_4c_x4 },
|
|
|
- { AUDIO_S8, 4, 1, 4, SDL_Upsample_S8_4c_x4 },
|
|
|
- { AUDIO_S8, 6, 0, 2, SDL_Downsample_S8_6c_x2 },
|
|
|
- { AUDIO_S8, 6, 1, 2, SDL_Upsample_S8_6c_x2 },
|
|
|
- { AUDIO_S8, 6, 0, 4, SDL_Downsample_S8_6c_x4 },
|
|
|
- { AUDIO_S8, 6, 1, 4, SDL_Upsample_S8_6c_x4 },
|
|
|
- { AUDIO_S8, 8, 0, 2, SDL_Downsample_S8_8c_x2 },
|
|
|
- { AUDIO_S8, 8, 1, 2, SDL_Upsample_S8_8c_x2 },
|
|
|
- { AUDIO_S8, 8, 0, 4, SDL_Downsample_S8_8c_x4 },
|
|
|
- { AUDIO_S8, 8, 1, 4, SDL_Upsample_S8_8c_x4 },
|
|
|
- { AUDIO_U16LSB, 1, 0, 2, SDL_Downsample_U16LSB_1c_x2 },
|
|
|
- { AUDIO_U16LSB, 1, 1, 2, SDL_Upsample_U16LSB_1c_x2 },
|
|
|
- { AUDIO_U16LSB, 1, 0, 4, SDL_Downsample_U16LSB_1c_x4 },
|
|
|
- { AUDIO_U16LSB, 1, 1, 4, SDL_Upsample_U16LSB_1c_x4 },
|
|
|
- { AUDIO_U16LSB, 2, 0, 2, SDL_Downsample_U16LSB_2c_x2 },
|
|
|
- { AUDIO_U16LSB, 2, 1, 2, SDL_Upsample_U16LSB_2c_x2 },
|
|
|
- { AUDIO_U16LSB, 2, 0, 4, SDL_Downsample_U16LSB_2c_x4 },
|
|
|
- { AUDIO_U16LSB, 2, 1, 4, SDL_Upsample_U16LSB_2c_x4 },
|
|
|
- { AUDIO_U16LSB, 4, 0, 2, SDL_Downsample_U16LSB_4c_x2 },
|
|
|
- { AUDIO_U16LSB, 4, 1, 2, SDL_Upsample_U16LSB_4c_x2 },
|
|
|
- { AUDIO_U16LSB, 4, 0, 4, SDL_Downsample_U16LSB_4c_x4 },
|
|
|
- { AUDIO_U16LSB, 4, 1, 4, SDL_Upsample_U16LSB_4c_x4 },
|
|
|
- { AUDIO_U16LSB, 6, 0, 2, SDL_Downsample_U16LSB_6c_x2 },
|
|
|
- { AUDIO_U16LSB, 6, 1, 2, SDL_Upsample_U16LSB_6c_x2 },
|
|
|
- { AUDIO_U16LSB, 6, 0, 4, SDL_Downsample_U16LSB_6c_x4 },
|
|
|
- { AUDIO_U16LSB, 6, 1, 4, SDL_Upsample_U16LSB_6c_x4 },
|
|
|
- { AUDIO_U16LSB, 8, 0, 2, SDL_Downsample_U16LSB_8c_x2 },
|
|
|
- { AUDIO_U16LSB, 8, 1, 2, SDL_Upsample_U16LSB_8c_x2 },
|
|
|
- { AUDIO_U16LSB, 8, 0, 4, SDL_Downsample_U16LSB_8c_x4 },
|
|
|
- { AUDIO_U16LSB, 8, 1, 4, SDL_Upsample_U16LSB_8c_x4 },
|
|
|
- { AUDIO_S16LSB, 1, 0, 2, SDL_Downsample_S16LSB_1c_x2 },
|
|
|
- { AUDIO_S16LSB, 1, 1, 2, SDL_Upsample_S16LSB_1c_x2 },
|
|
|
- { AUDIO_S16LSB, 1, 0, 4, SDL_Downsample_S16LSB_1c_x4 },
|
|
|
- { AUDIO_S16LSB, 1, 1, 4, SDL_Upsample_S16LSB_1c_x4 },
|
|
|
- { AUDIO_S16LSB, 2, 0, 2, SDL_Downsample_S16LSB_2c_x2 },
|
|
|
- { AUDIO_S16LSB, 2, 1, 2, SDL_Upsample_S16LSB_2c_x2 },
|
|
|
- { AUDIO_S16LSB, 2, 0, 4, SDL_Downsample_S16LSB_2c_x4 },
|
|
|
- { AUDIO_S16LSB, 2, 1, 4, SDL_Upsample_S16LSB_2c_x4 },
|
|
|
- { AUDIO_S16LSB, 4, 0, 2, SDL_Downsample_S16LSB_4c_x2 },
|
|
|
- { AUDIO_S16LSB, 4, 1, 2, SDL_Upsample_S16LSB_4c_x2 },
|
|
|
- { AUDIO_S16LSB, 4, 0, 4, SDL_Downsample_S16LSB_4c_x4 },
|
|
|
- { AUDIO_S16LSB, 4, 1, 4, SDL_Upsample_S16LSB_4c_x4 },
|
|
|
- { AUDIO_S16LSB, 6, 0, 2, SDL_Downsample_S16LSB_6c_x2 },
|
|
|
- { AUDIO_S16LSB, 6, 1, 2, SDL_Upsample_S16LSB_6c_x2 },
|
|
|
- { AUDIO_S16LSB, 6, 0, 4, SDL_Downsample_S16LSB_6c_x4 },
|
|
|
- { AUDIO_S16LSB, 6, 1, 4, SDL_Upsample_S16LSB_6c_x4 },
|
|
|
- { AUDIO_S16LSB, 8, 0, 2, SDL_Downsample_S16LSB_8c_x2 },
|
|
|
- { AUDIO_S16LSB, 8, 1, 2, SDL_Upsample_S16LSB_8c_x2 },
|
|
|
- { AUDIO_S16LSB, 8, 0, 4, SDL_Downsample_S16LSB_8c_x4 },
|
|
|
- { AUDIO_S16LSB, 8, 1, 4, SDL_Upsample_S16LSB_8c_x4 },
|
|
|
- { AUDIO_U16MSB, 1, 0, 2, SDL_Downsample_U16MSB_1c_x2 },
|
|
|
- { AUDIO_U16MSB, 1, 1, 2, SDL_Upsample_U16MSB_1c_x2 },
|
|
|
- { AUDIO_U16MSB, 1, 0, 4, SDL_Downsample_U16MSB_1c_x4 },
|
|
|
- { AUDIO_U16MSB, 1, 1, 4, SDL_Upsample_U16MSB_1c_x4 },
|
|
|
- { AUDIO_U16MSB, 2, 0, 2, SDL_Downsample_U16MSB_2c_x2 },
|
|
|
- { AUDIO_U16MSB, 2, 1, 2, SDL_Upsample_U16MSB_2c_x2 },
|
|
|
- { AUDIO_U16MSB, 2, 0, 4, SDL_Downsample_U16MSB_2c_x4 },
|
|
|
- { AUDIO_U16MSB, 2, 1, 4, SDL_Upsample_U16MSB_2c_x4 },
|
|
|
- { AUDIO_U16MSB, 4, 0, 2, SDL_Downsample_U16MSB_4c_x2 },
|
|
|
- { AUDIO_U16MSB, 4, 1, 2, SDL_Upsample_U16MSB_4c_x2 },
|
|
|
- { AUDIO_U16MSB, 4, 0, 4, SDL_Downsample_U16MSB_4c_x4 },
|
|
|
- { AUDIO_U16MSB, 4, 1, 4, SDL_Upsample_U16MSB_4c_x4 },
|
|
|
- { AUDIO_U16MSB, 6, 0, 2, SDL_Downsample_U16MSB_6c_x2 },
|
|
|
- { AUDIO_U16MSB, 6, 1, 2, SDL_Upsample_U16MSB_6c_x2 },
|
|
|
- { AUDIO_U16MSB, 6, 0, 4, SDL_Downsample_U16MSB_6c_x4 },
|
|
|
- { AUDIO_U16MSB, 6, 1, 4, SDL_Upsample_U16MSB_6c_x4 },
|
|
|
- { AUDIO_U16MSB, 8, 0, 2, SDL_Downsample_U16MSB_8c_x2 },
|
|
|
- { AUDIO_U16MSB, 8, 1, 2, SDL_Upsample_U16MSB_8c_x2 },
|
|
|
- { AUDIO_U16MSB, 8, 0, 4, SDL_Downsample_U16MSB_8c_x4 },
|
|
|
- { AUDIO_U16MSB, 8, 1, 4, SDL_Upsample_U16MSB_8c_x4 },
|
|
|
- { AUDIO_S16MSB, 1, 0, 2, SDL_Downsample_S16MSB_1c_x2 },
|
|
|
- { AUDIO_S16MSB, 1, 1, 2, SDL_Upsample_S16MSB_1c_x2 },
|
|
|
- { AUDIO_S16MSB, 1, 0, 4, SDL_Downsample_S16MSB_1c_x4 },
|
|
|
- { AUDIO_S16MSB, 1, 1, 4, SDL_Upsample_S16MSB_1c_x4 },
|
|
|
- { AUDIO_S16MSB, 2, 0, 2, SDL_Downsample_S16MSB_2c_x2 },
|
|
|
- { AUDIO_S16MSB, 2, 1, 2, SDL_Upsample_S16MSB_2c_x2 },
|
|
|
- { AUDIO_S16MSB, 2, 0, 4, SDL_Downsample_S16MSB_2c_x4 },
|
|
|
- { AUDIO_S16MSB, 2, 1, 4, SDL_Upsample_S16MSB_2c_x4 },
|
|
|
- { AUDIO_S16MSB, 4, 0, 2, SDL_Downsample_S16MSB_4c_x2 },
|
|
|
- { AUDIO_S16MSB, 4, 1, 2, SDL_Upsample_S16MSB_4c_x2 },
|
|
|
- { AUDIO_S16MSB, 4, 0, 4, SDL_Downsample_S16MSB_4c_x4 },
|
|
|
- { AUDIO_S16MSB, 4, 1, 4, SDL_Upsample_S16MSB_4c_x4 },
|
|
|
- { AUDIO_S16MSB, 6, 0, 2, SDL_Downsample_S16MSB_6c_x2 },
|
|
|
- { AUDIO_S16MSB, 6, 1, 2, SDL_Upsample_S16MSB_6c_x2 },
|
|
|
- { AUDIO_S16MSB, 6, 0, 4, SDL_Downsample_S16MSB_6c_x4 },
|
|
|
- { AUDIO_S16MSB, 6, 1, 4, SDL_Upsample_S16MSB_6c_x4 },
|
|
|
- { AUDIO_S16MSB, 8, 0, 2, SDL_Downsample_S16MSB_8c_x2 },
|
|
|
- { AUDIO_S16MSB, 8, 1, 2, SDL_Upsample_S16MSB_8c_x2 },
|
|
|
- { AUDIO_S16MSB, 8, 0, 4, SDL_Downsample_S16MSB_8c_x4 },
|
|
|
- { AUDIO_S16MSB, 8, 1, 4, SDL_Upsample_S16MSB_8c_x4 },
|
|
|
- { AUDIO_S32LSB, 1, 0, 2, SDL_Downsample_S32LSB_1c_x2 },
|
|
|
- { AUDIO_S32LSB, 1, 1, 2, SDL_Upsample_S32LSB_1c_x2 },
|
|
|
- { AUDIO_S32LSB, 1, 0, 4, SDL_Downsample_S32LSB_1c_x4 },
|
|
|
- { AUDIO_S32LSB, 1, 1, 4, SDL_Upsample_S32LSB_1c_x4 },
|
|
|
- { AUDIO_S32LSB, 2, 0, 2, SDL_Downsample_S32LSB_2c_x2 },
|
|
|
- { AUDIO_S32LSB, 2, 1, 2, SDL_Upsample_S32LSB_2c_x2 },
|
|
|
- { AUDIO_S32LSB, 2, 0, 4, SDL_Downsample_S32LSB_2c_x4 },
|
|
|
- { AUDIO_S32LSB, 2, 1, 4, SDL_Upsample_S32LSB_2c_x4 },
|
|
|
- { AUDIO_S32LSB, 4, 0, 2, SDL_Downsample_S32LSB_4c_x2 },
|
|
|
- { AUDIO_S32LSB, 4, 1, 2, SDL_Upsample_S32LSB_4c_x2 },
|
|
|
- { AUDIO_S32LSB, 4, 0, 4, SDL_Downsample_S32LSB_4c_x4 },
|
|
|
- { AUDIO_S32LSB, 4, 1, 4, SDL_Upsample_S32LSB_4c_x4 },
|
|
|
- { AUDIO_S32LSB, 6, 0, 2, SDL_Downsample_S32LSB_6c_x2 },
|
|
|
- { AUDIO_S32LSB, 6, 1, 2, SDL_Upsample_S32LSB_6c_x2 },
|
|
|
- { AUDIO_S32LSB, 6, 0, 4, SDL_Downsample_S32LSB_6c_x4 },
|
|
|
- { AUDIO_S32LSB, 6, 1, 4, SDL_Upsample_S32LSB_6c_x4 },
|
|
|
- { AUDIO_S32LSB, 8, 0, 2, SDL_Downsample_S32LSB_8c_x2 },
|
|
|
- { AUDIO_S32LSB, 8, 1, 2, SDL_Upsample_S32LSB_8c_x2 },
|
|
|
- { AUDIO_S32LSB, 8, 0, 4, SDL_Downsample_S32LSB_8c_x4 },
|
|
|
- { AUDIO_S32LSB, 8, 1, 4, SDL_Upsample_S32LSB_8c_x4 },
|
|
|
- { AUDIO_S32MSB, 1, 0, 2, SDL_Downsample_S32MSB_1c_x2 },
|
|
|
- { AUDIO_S32MSB, 1, 1, 2, SDL_Upsample_S32MSB_1c_x2 },
|
|
|
- { AUDIO_S32MSB, 1, 0, 4, SDL_Downsample_S32MSB_1c_x4 },
|
|
|
- { AUDIO_S32MSB, 1, 1, 4, SDL_Upsample_S32MSB_1c_x4 },
|
|
|
- { AUDIO_S32MSB, 2, 0, 2, SDL_Downsample_S32MSB_2c_x2 },
|
|
|
- { AUDIO_S32MSB, 2, 1, 2, SDL_Upsample_S32MSB_2c_x2 },
|
|
|
- { AUDIO_S32MSB, 2, 0, 4, SDL_Downsample_S32MSB_2c_x4 },
|
|
|
- { AUDIO_S32MSB, 2, 1, 4, SDL_Upsample_S32MSB_2c_x4 },
|
|
|
- { AUDIO_S32MSB, 4, 0, 2, SDL_Downsample_S32MSB_4c_x2 },
|
|
|
- { AUDIO_S32MSB, 4, 1, 2, SDL_Upsample_S32MSB_4c_x2 },
|
|
|
- { AUDIO_S32MSB, 4, 0, 4, SDL_Downsample_S32MSB_4c_x4 },
|
|
|
- { AUDIO_S32MSB, 4, 1, 4, SDL_Upsample_S32MSB_4c_x4 },
|
|
|
- { AUDIO_S32MSB, 6, 0, 2, SDL_Downsample_S32MSB_6c_x2 },
|
|
|
- { AUDIO_S32MSB, 6, 1, 2, SDL_Upsample_S32MSB_6c_x2 },
|
|
|
- { AUDIO_S32MSB, 6, 0, 4, SDL_Downsample_S32MSB_6c_x4 },
|
|
|
- { AUDIO_S32MSB, 6, 1, 4, SDL_Upsample_S32MSB_6c_x4 },
|
|
|
- { AUDIO_S32MSB, 8, 0, 2, SDL_Downsample_S32MSB_8c_x2 },
|
|
|
- { AUDIO_S32MSB, 8, 1, 2, SDL_Upsample_S32MSB_8c_x2 },
|
|
|
- { AUDIO_S32MSB, 8, 0, 4, SDL_Downsample_S32MSB_8c_x4 },
|
|
|
- { AUDIO_S32MSB, 8, 1, 4, SDL_Upsample_S32MSB_8c_x4 },
|
|
|
- { AUDIO_F32LSB, 1, 0, 2, SDL_Downsample_F32LSB_1c_x2 },
|
|
|
- { AUDIO_F32LSB, 1, 1, 2, SDL_Upsample_F32LSB_1c_x2 },
|
|
|
- { AUDIO_F32LSB, 1, 0, 4, SDL_Downsample_F32LSB_1c_x4 },
|
|
|
- { AUDIO_F32LSB, 1, 1, 4, SDL_Upsample_F32LSB_1c_x4 },
|
|
|
- { AUDIO_F32LSB, 2, 0, 2, SDL_Downsample_F32LSB_2c_x2 },
|
|
|
- { AUDIO_F32LSB, 2, 1, 2, SDL_Upsample_F32LSB_2c_x2 },
|
|
|
- { AUDIO_F32LSB, 2, 0, 4, SDL_Downsample_F32LSB_2c_x4 },
|
|
|
- { AUDIO_F32LSB, 2, 1, 4, SDL_Upsample_F32LSB_2c_x4 },
|
|
|
- { AUDIO_F32LSB, 4, 0, 2, SDL_Downsample_F32LSB_4c_x2 },
|
|
|
- { AUDIO_F32LSB, 4, 1, 2, SDL_Upsample_F32LSB_4c_x2 },
|
|
|
- { AUDIO_F32LSB, 4, 0, 4, SDL_Downsample_F32LSB_4c_x4 },
|
|
|
- { AUDIO_F32LSB, 4, 1, 4, SDL_Upsample_F32LSB_4c_x4 },
|
|
|
- { AUDIO_F32LSB, 6, 0, 2, SDL_Downsample_F32LSB_6c_x2 },
|
|
|
- { AUDIO_F32LSB, 6, 1, 2, SDL_Upsample_F32LSB_6c_x2 },
|
|
|
- { AUDIO_F32LSB, 6, 0, 4, SDL_Downsample_F32LSB_6c_x4 },
|
|
|
- { AUDIO_F32LSB, 6, 1, 4, SDL_Upsample_F32LSB_6c_x4 },
|
|
|
- { AUDIO_F32LSB, 8, 0, 2, SDL_Downsample_F32LSB_8c_x2 },
|
|
|
- { AUDIO_F32LSB, 8, 1, 2, SDL_Upsample_F32LSB_8c_x2 },
|
|
|
- { AUDIO_F32LSB, 8, 0, 4, SDL_Downsample_F32LSB_8c_x4 },
|
|
|
- { AUDIO_F32LSB, 8, 1, 4, SDL_Upsample_F32LSB_8c_x4 },
|
|
|
- { AUDIO_F32MSB, 1, 0, 2, SDL_Downsample_F32MSB_1c_x2 },
|
|
|
- { AUDIO_F32MSB, 1, 1, 2, SDL_Upsample_F32MSB_1c_x2 },
|
|
|
- { AUDIO_F32MSB, 1, 0, 4, SDL_Downsample_F32MSB_1c_x4 },
|
|
|
- { AUDIO_F32MSB, 1, 1, 4, SDL_Upsample_F32MSB_1c_x4 },
|
|
|
- { AUDIO_F32MSB, 2, 0, 2, SDL_Downsample_F32MSB_2c_x2 },
|
|
|
- { AUDIO_F32MSB, 2, 1, 2, SDL_Upsample_F32MSB_2c_x2 },
|
|
|
- { AUDIO_F32MSB, 2, 0, 4, SDL_Downsample_F32MSB_2c_x4 },
|
|
|
- { AUDIO_F32MSB, 2, 1, 4, SDL_Upsample_F32MSB_2c_x4 },
|
|
|
- { AUDIO_F32MSB, 4, 0, 2, SDL_Downsample_F32MSB_4c_x2 },
|
|
|
- { AUDIO_F32MSB, 4, 1, 2, SDL_Upsample_F32MSB_4c_x2 },
|
|
|
- { AUDIO_F32MSB, 4, 0, 4, SDL_Downsample_F32MSB_4c_x4 },
|
|
|
- { AUDIO_F32MSB, 4, 1, 4, SDL_Upsample_F32MSB_4c_x4 },
|
|
|
- { AUDIO_F32MSB, 6, 0, 2, SDL_Downsample_F32MSB_6c_x2 },
|
|
|
- { AUDIO_F32MSB, 6, 1, 2, SDL_Upsample_F32MSB_6c_x2 },
|
|
|
- { AUDIO_F32MSB, 6, 0, 4, SDL_Downsample_F32MSB_6c_x4 },
|
|
|
- { AUDIO_F32MSB, 6, 1, 4, SDL_Upsample_F32MSB_6c_x4 },
|
|
|
- { AUDIO_F32MSB, 8, 0, 2, SDL_Downsample_F32MSB_8c_x2 },
|
|
|
- { AUDIO_F32MSB, 8, 1, 2, SDL_Upsample_F32MSB_8c_x2 },
|
|
|
- { AUDIO_F32MSB, 8, 0, 4, SDL_Downsample_F32MSB_8c_x4 },
|
|
|
- { AUDIO_F32MSB, 8, 1, 4, SDL_Upsample_F32MSB_8c_x4 },
|
|
|
-#endif /* !LESS_RESAMPLERS */
|
|
|
-#endif /* !NO_RESAMPLERS */
|
|
|
- { 0, 0, 0, 0, NULL }
|
|
|
-};
|
|
|
-
|
|
|
-/* 390 converters generated. */
|
|
|
-
|
|
|
-/* *INDENT-ON* */
|
|
|
-
|
|
|
/* vi: set ts=4 sw=4 expandtab: */
|