Mercurial > sdl-ios-xcode
view docs/html/sdlbuildaudiocvt.html @ 3880:74e828c64315 SDL-1.2
Fixed bug #292
I might be on crack here.
It looks like SDL_ConvertMono() in src/audio/SDL_audiocvt.c adds the left and
right channels of a stereo stream together, and clamps the new mono channel if
it would overflow.
Shouldn't it be dividing by 2 to average the two sample points instead of
clamping? Otherwise the mono sample point's volume doubles in the conversion.
This would also make the conversion faster, as it replaces two branches per
sample frame with a bitwise shift.
--ryan.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 24 Sep 2006 15:45:37 +0000 |
parents | 355632dca928 |
children |
line wrap: on
line source
<HTML ><HEAD ><TITLE >SDL_BuildAudioCVT</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ "><LINK REL="HOME" TITLE="SDL Library Documentation" HREF="index.html"><LINK REL="UP" TITLE="Audio" HREF="audio.html"><LINK REL="PREVIOUS" TITLE="SDL_AudioCVT" HREF="sdlaudiocvt.html"><LINK REL="NEXT" TITLE="SDL_ConvertAudio" HREF="sdlconvertaudio.html"></HEAD ><BODY CLASS="REFENTRY" BGCOLOR="#FFF8DC" TEXT="#000000" LINK="#0000ee" VLINK="#551a8b" ALINK="#ff0000" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >SDL Library Documentation</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="sdlaudiocvt.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="sdlconvertaudio.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="SDLBUILDAUDIOCVT" ></A >SDL_BuildAudioCVT</H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN7002" ></A ><H2 >Name</H2 >SDL_BuildAudioCVT -- Initializes a SDL_AudioCVT structure for conversion</DIV ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN7005" ></A ><H2 >Synopsis</H2 ><DIV CLASS="FUNCSYNOPSIS" ><A NAME="AEN7006" ></A ><P ></P ><PRE CLASS="FUNCSYNOPSISINFO" >#include "SDL.h"</PRE ><P ><CODE ><CODE CLASS="FUNCDEF" >int <B CLASS="FSFUNC" >SDL_BuildAudioCVT</B ></CODE >(SDL_AudioCVT *cvt, Uint16 src_format, Uint8 src_channels, int src_rate, Uint16 dst_format, Uint8 dst_channels, int dst_rate);</CODE ></P ><P ></P ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN7012" ></A ><H2 >Description</H2 ><P >Before an <A HREF="sdlaudiocvt.html" ><SPAN CLASS="STRUCTNAME" >SDL_AudioCVT</SPAN ></A > structure can be used to convert audio data it must be initialized with source and destination information. </P ><P ><TT CLASS="PARAMETER" ><I >src_format</I ></TT > and <TT CLASS="PARAMETER" ><I >dst_format</I ></TT > are the source and destination format of the conversion. (For information on audio formats see <A HREF="sdlaudiospec.html" ><SPAN CLASS="STRUCTNAME" > SDL_AudioSpec</SPAN ></A >). <TT CLASS="PARAMETER" ><I >src_channels</I ></TT > and <TT CLASS="PARAMETER" ><I >dst_channels</I ></TT > are the number of channels in the source and destination formats. Finally, <TT CLASS="PARAMETER" ><I >src_rate</I ></TT > and <TT CLASS="PARAMETER" ><I >dst_rate</I ></TT > are the frequency or samples-per-second of the source and destination formats. Once again, see <A HREF="sdlaudiospec.html" ><SPAN CLASS="STRUCTNAME" >SDL_AudioSpec</SPAN ></A >.</P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN7028" ></A ><H2 >Return Values</H2 ><P >Returns <SPAN CLASS="RETURNVALUE" >-1</SPAN > if the filter could not be built or 1 if it could.</P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN7032" ></A ><H2 >Examples</H2 ><P >See <A HREF="sdlconvertaudio.html" ><TT CLASS="FUNCTION" >SDL_ConvertAudio</TT ></A >.</P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN7037" ></A ><H2 >See Also</H2 ><P ><A HREF="sdlconvertaudio.html" ><TT CLASS="FUNCTION" >SDL_ConvertAudio</TT ></A >, <A HREF="sdlaudiocvt.html" ><TT CLASS="FUNCTION" >SDL_AudioCVT</TT ></A ></P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="sdlaudiocvt.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="sdlconvertaudio.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >SDL_AudioCVT</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="audio.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >SDL_ConvertAudio</TD ></TR ></TABLE ></DIV ></BODY ></HTML >