mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 00:55:48 +00:00
Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys.
This commit is contained in:
parent
b94e2d8ca0
commit
c2c66aff7d
24198 changed files with 0 additions and 37285 deletions
142
sdk/lib/3rdparty/libmpg123/synth_8bit.c
vendored
Normal file
142
sdk/lib/3rdparty/libmpg123/synth_8bit.c
vendored
Normal file
|
@ -0,0 +1,142 @@
|
|||
/*
|
||||
synth_8bit.c: The functions for synthesizing 8bit samples, at the end of decoding.
|
||||
|
||||
copyright 1995-2008 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Michael Hipp, heavily dissected and rearranged by Thomas Orgis
|
||||
*/
|
||||
|
||||
#include "mpg123lib_intern.h"
|
||||
#include "sample.h"
|
||||
#include "debug.h"
|
||||
|
||||
/*
|
||||
Part 2: All synth functions that produce 8bit output.
|
||||
What we need is just a special WRITE_SAMPLE. For the generic and i386 functions, that is.
|
||||
For the rather optimized synth_1to1, we will need the postprocessing 8bit converters from synth_8bit.h .
|
||||
*/
|
||||
|
||||
#define SAMPLE_T unsigned char
|
||||
#define WRITE_SAMPLE(samples,sum,clip) WRITE_8BIT_SAMPLE(samples,sum,clip)
|
||||
|
||||
/* Part 2a: All straight 1to1 decoding functions */
|
||||
#define BLOCK 0x40 /* One decoding block is 64 samples. */
|
||||
|
||||
#define SYNTH_NAME synth_1to1_8bit
|
||||
#include "synth.h"
|
||||
#undef SYNTH_NAME
|
||||
|
||||
/* Mono-related synths; they wrap over _some_ synth_1to1_8bit (could be generic, could be i386). */
|
||||
#define SYNTH_NAME fr->synths.plain[r_1to1][f_8]
|
||||
#define MONO_NAME synth_1to1_8bit_mono
|
||||
#define MONO2STEREO_NAME synth_1to1_8bit_m2s
|
||||
#include "synth_mono.h"
|
||||
#undef SYNTH_NAME
|
||||
#undef MONO_NAME
|
||||
#undef MONO2STEREO_NAME
|
||||
|
||||
#ifdef OPT_X86
|
||||
#define NO_AUTOINCREMENT
|
||||
#define SYNTH_NAME synth_1to1_8bit_i386
|
||||
#include "synth.h"
|
||||
#undef SYNTH_NAME
|
||||
/* i386 uses the normal mono functions. */
|
||||
#undef NO_AUTOINCREMENT
|
||||
#endif
|
||||
|
||||
/* But now, we need functions that take the 16bit output of optimized synth_1to1 and convert it.
|
||||
I suppose that is still faster than dropping the optimization altogether! */
|
||||
|
||||
#define BASE_SYNTH_NAME fr->synths.plain[r_1to1][f_16]
|
||||
#define SYNTH_NAME synth_1to1_8bit_wrap
|
||||
#define MONO_NAME synth_1to1_8bit_wrap_mono
|
||||
#define MONO2STEREO_NAME synth_1to1_8bit_wrap_m2s
|
||||
#include "synth_8bit.h"
|
||||
#undef BASE_SYNTH_NAME
|
||||
#undef SYNTH_NAME
|
||||
#undef MONO_NAME
|
||||
#undef MONO2STEREO_NAME
|
||||
|
||||
#undef BLOCK
|
||||
|
||||
#ifndef NO_DOWNSAMPLE
|
||||
|
||||
/*
|
||||
Part 2b: 2to1 synth. Only generic and i386.
|
||||
*/
|
||||
#define BLOCK 0x20 /* One decoding block is 32 samples. */
|
||||
|
||||
#define SYNTH_NAME synth_2to1_8bit
|
||||
#include "synth.h"
|
||||
#undef SYNTH_NAME
|
||||
|
||||
/* Mono-related synths; they wrap over _some_ synth_2to1_8bit (could be generic, could be i386). */
|
||||
#define SYNTH_NAME fr->synths.plain[r_2to1][f_8]
|
||||
#define MONO_NAME synth_2to1_8bit_mono
|
||||
#define MONO2STEREO_NAME synth_2to1_8bit_m2s
|
||||
#include "synth_mono.h"
|
||||
#undef SYNTH_NAME
|
||||
#undef MONO_NAME
|
||||
#undef MONO2STEREO_NAME
|
||||
|
||||
#ifdef OPT_X86
|
||||
#define NO_AUTOINCREMENT
|
||||
#define SYNTH_NAME synth_2to1_8bit_i386
|
||||
#include "synth.h"
|
||||
#undef SYNTH_NAME
|
||||
/* i386 uses the normal mono functions. */
|
||||
#undef NO_AUTOINCREMENT
|
||||
#endif
|
||||
|
||||
#undef BLOCK
|
||||
|
||||
/*
|
||||
Part 2c: 4to1 synth. Only generic and i386.
|
||||
*/
|
||||
#define BLOCK 0x10 /* One decoding block is 16 samples. */
|
||||
|
||||
#define SYNTH_NAME synth_4to1_8bit
|
||||
#include "synth.h"
|
||||
#undef SYNTH_NAME
|
||||
|
||||
/* Mono-related synths; they wrap over _some_ synth_4to1_8bit (could be generic, could be i386). */
|
||||
#define SYNTH_NAME fr->synths.plain[r_4to1][f_8]
|
||||
#define MONO_NAME synth_4to1_8bit_mono
|
||||
#define MONO2STEREO_NAME synth_4to1_8bit_m2s
|
||||
#include "synth_mono.h"
|
||||
#undef SYNTH_NAME
|
||||
#undef MONO_NAME
|
||||
#undef MONO2STEREO_NAME
|
||||
|
||||
#ifdef OPT_X86
|
||||
#define NO_AUTOINCREMENT
|
||||
#define SYNTH_NAME synth_4to1_8bit_i386
|
||||
#include "synth.h"
|
||||
#undef SYNTH_NAME
|
||||
/* i386 uses the normal mono functions. */
|
||||
#undef NO_AUTOINCREMENT
|
||||
#endif
|
||||
|
||||
#undef BLOCK
|
||||
|
||||
#endif /* NO_DOWNSAMPLE */
|
||||
|
||||
#ifndef NO_NTOM
|
||||
/*
|
||||
Part 2d: ntom synth.
|
||||
Same procedure as above... Just no extra play anymore, straight synth that may use an optimized dct64.
|
||||
*/
|
||||
|
||||
/* These are all in one header, there's no flexibility to gain. */
|
||||
#define SYNTH_NAME synth_ntom_8bit
|
||||
#define MONO_NAME synth_ntom_8bit_mono
|
||||
#define MONO2STEREO_NAME synth_ntom_8bit_m2s
|
||||
#include "synth_ntom.h"
|
||||
#undef SYNTH_NAME
|
||||
#undef MONO_NAME
|
||||
#undef MONO2STEREO_NAME
|
||||
|
||||
#endif
|
||||
|
||||
#undef SAMPLE_T
|
||||
#undef WRITE_SAMPLE
|
Loading…
Add table
Add a link
Reference in a new issue