From 152d605773745cf59f89a3575ed0aed3c8bd5b2e Mon Sep 17 00:00:00 2001 From: Miguel Freitas Date: Mon, 1 Jul 2002 13:51:26 +0000 Subject: =?UTF-8?q?improved=20audio=20resampling=20for=20limited=20feature?= =?UTF-8?q?d=20sound=20cards=20(like=20the=20ones=20found=20in=20laptops,?= =?UTF-8?q?=20supporting=20only=2016=20bits,=20only=20stereo=20etc).=20as?= =?UTF-8?q?=20added=20bonus=20of=20new=20"stackable"=20conversion=20scheme?= =?UTF-8?q?=20fixes=20resampling=20for=208=20bit=20streams.=20(thanks=20Da?= =?UTF-8?q?mien=20Clermont=C3=A9=20for=20discussion=20and=20ideas)=20note1?= =?UTF-8?q?:=20alsa=20patch=20untested.=20note2:=20pass-through=20untested?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CVS patchset: 2187 CVS date: 2002/07/01 13:51:26 --- src/xine-engine/resample.c | 50 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) (limited to 'src/xine-engine/resample.c') diff --git a/src/xine-engine/resample.c b/src/xine-engine/resample.c index 4b363735c..6f7863e6e 100644 --- a/src/xine-engine/resample.c +++ b/src/xine-engine/resample.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: resample.c,v 1.2 2001/12/27 14:30:30 f1rmb Exp $ + * $Id: resample.c,v 1.3 2002/07/01 13:51:28 miguelfreitas Exp $ */ #ifdef HAVE_CONFIG_H @@ -278,3 +278,51 @@ void audio_out_resample_6channel(int16_t* input_samples, uint32_t in_samples, output_samples[out_samples*6-2] = input_samples[in_samples*6-2]; output_samples[out_samples*6-1] = input_samples[in_samples*6-1]; } + +void audio_out_resample_8to16(int8_t* input_samples, + int16_t* output_samples, uint32_t samples) +{ + while( samples-- ) { + int16_t os; + + os = *input_samples++; + os = (os - 0x80) << 8; + *output_samples++ = os; + } +} + +void audio_out_resample_16to8(int16_t* input_samples, + int8_t* output_samples, uint32_t samples) +{ + while( samples-- ) { + int16_t os; + + os = *input_samples++; + os = (os >> 8) + 0x80; + *output_samples++ = os; + } +} + +void audio_out_resample_monotostereo(int16_t* input_samples, + int16_t* output_samples, uint32_t frames) +{ + while( frames-- ) { + int16_t os; + + os = *input_samples++; + *output_samples++ = os; + *output_samples++ = os; + } +} + +void audio_out_resample_stereotomono(int16_t* input_samples, + int16_t* output_samples, uint32_t frames) +{ + while( frames-- ) { + int16_t os; + + os = (*input_samples++)>>1; + os += (*input_samples++)>>1; + *output_samples++ = os; + } +} -- cgit v1.2.3