| /* DO NOT EDIT! This file is generated by sdlgenaudiocvt.pl */ |
| /* |
| Simple DirectMedia Layer |
| Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org> |
| |
| This software is provided 'as-is', without any express or implied |
| warranty. In no event will the authors be held liable for any damages |
| arising from the use of this software. |
| |
| Permission is granted to anyone to use this software for any purpose, |
| including commercial applications, and to alter it and redistribute it |
| freely, subject to the following restrictions: |
| |
| 1. The origin of this software must not be misrepresented; you must not |
| claim that you wrote the original software. If you use this software |
| in a product, an acknowledgment in the product documentation would be |
| appreciated but is not required. |
| 2. Altered source versions must be plainly marked as such, and must not be |
| misrepresented as being the original software. |
| 3. This notice may not be removed or altered from any source distribution. |
| */ |
| |
| #include "SDL_config.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* */ |
| |
| #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) |
| { |
| int i; |
| const Uint8 *src; |
| float *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_U8 to AUDIO_F32LSB.\n"); |
| #endif |
| |
| 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); |
| } |
| |
| cvt->len_cvt *= 4; |
| if (cvt->filters[++cvt->filter_index]) { |
| cvt->filters[cvt->filter_index] (cvt, AUDIO_F32LSB); |
| } |
| } |
| |
| static void SDLCALL |
| SDL_Convert_U8_to_F32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format) |
| { |
| int i; |
| const Uint8 *src; |
| float *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_U8 to AUDIO_F32MSB.\n"); |
| #endif |
| |
| 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); |
| } |
| |
| 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); |
| } |
| } |
| |
| static void SDLCALL |
| SDL_Convert_S8_to_U16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format) |
| { |
| int i; |
| const Uint8 *src; |
| Uint16 *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_S8 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) ((((Sint8) *src)) ^ 0x80)) << 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_S8_to_S16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format) |
| { |
| int i; |
| const Uint8 *src; |
| Sint16 *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_S8 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) ((Sint8) *src)) << 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_S8_to_U16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format) |
| { |
| int i; |
| const Uint8 *src; |
| Uint16 *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_S8 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) ((((Sint8) *src)) ^ 0x80)) << 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_S8_to_S16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format) |
| { |
| int i; |
| const Uint8 *src; |
| Sint16 *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_S8 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) ((Sint8) *src)) << 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_S8_to_S32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format) |
| { |
| int i; |
| const Uint8 *src; |
| Sint32 *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_S8 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) ((Sint8) *src)) << 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_S8_to_S32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format) |
| { |
| int i; |
| const Uint8 *src; |
| Sint32 *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_S8 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) ((Sint8) *src)) << 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_S8_to_F32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format) |
| { |
| int i; |
| const Uint8 *src; |
| float *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_S8 to AUDIO_F32LSB.\n"); |
| #endif |
| |
| 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); |
| } |
| |
| cvt->len_cvt *= 4; |
| if (cvt->filters[++cvt->filter_index]) { |
| cvt->filters[cvt->filter_index] (cvt, AUDIO_F32LSB); |
| } |
| } |
| |
| static void SDLCALL |
| SDL_Convert_S8_to_F32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format) |
| { |
| int i; |
| const Uint8 *src; |
| float *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_S8 to AUDIO_F32MSB.\n"); |
| #endif |
| |
| 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); |
| } |
| |
| cvt->len_cvt *= 4; |
| if (cvt->filters[++cvt->filter_index]) { |
| cvt->filters[cvt->filter_index] (cvt, AUDIO_F32MSB); |
| } |
| } |
| |
| static void SDLCALL |
| SDL_Convert_U16LSB_to_U8(SDL_AudioCVT * cvt, SDL_AudioFormat format) |
| { |
| int i; |
| const Uint16 *src; |
| Uint8 *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_U16LSB 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_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; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_U16LSB 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_SwapLE16(*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_U16LSB_to_S16LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format) |
| { |
| int i; |
| const Uint16 *src; |
| Sint16 *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_U16LSB 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_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; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_U16LSB 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 = SDL_SwapLE16(*src); |
| *dst = SDL_SwapBE16(val); |
| } |
| |
| if (cvt->filters[++cvt->filter_index]) { |
| cvt->filters[cvt->filter_index] (cvt, AUDIO_U16MSB); |
| } |
| } |
| |
| static void SDLCALL |
| SDL_Convert_U16LSB_to_S16MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format) |
| { |
| int i; |
| const Uint16 *src; |
| Sint16 *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_U16LSB 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_SwapLE16(*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_U16LSB_to_S32LSB(SDL_AudioCVT * cvt, SDL_AudioFormat format) |
| { |
| int i; |
| const Uint16 *src; |
| Sint32 *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_U16LSB 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_SwapLE16(*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_U16LSB_to_S32MSB(SDL_AudioCVT * cvt, SDL_AudioFormat format) |
| { |
| int i; |
| const Uint16 *src; |
| Sint32 *dst; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_U16LSB 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_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; |
| |
| #if DEBUG_CONVERT |
| fprintf(stderr, "Converting AUDIO_U16LSB 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_SwapLE16(*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_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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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) * cvt->rate_incr); |
| 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 |