<HTML
><HEAD
><TITLE
>SDL_OpenAudio</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_AudioSpec"
HREF="sdlaudiospec.html"><LINK
REL="NEXT"
TITLE="SDL_PauseAudio"
HREF="sdlpauseaudio.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="sdlaudiospec.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="sdlpauseaudio.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><H1
><A
NAME="SDLOPENAUDIO"
></A
>SDL_OpenAudio</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN6650"
></A
><H2
>Name</H2
>SDL_OpenAudio&nbsp;--&nbsp;Opens the audio device with the desired parameters.</DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN6653"
></A
><H2
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><A
NAME="AEN6654"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include "SDL.h"</PRE
><P
><CODE
><CODE
CLASS="FUNCDEF"
>int <B
CLASS="FSFUNC"
>SDL_OpenAudio</B
></CODE
>(SDL_AudioSpec *desired, SDL_AudioSpec *obtained);</CODE
></P
><P
></P
></DIV
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN6660"
></A
><H2
>Description</H2
><P
>This function opens the audio device with the <TT
CLASS="PARAMETER"
><I
>desired</I
></TT
> parameters, and
returns 0 if successful, placing the actual hardware parameters in the
structure pointed to by <TT
CLASS="PARAMETER"
><I
>obtained</I
></TT
>.  If <TT
CLASS="PARAMETER"
><I
>obtained</I
></TT
> is NULL, the audio
data passed to the callback function will be guaranteed to be in the
requested format, and will be automatically converted to the hardware
audio format if necessary.  This function returns -1 if it failed 
to open the audio device, or couldn't set up the audio thread.</P
><P
>To open the audio device a <TT
CLASS="PARAMETER"
><I
>desired</I
></TT
> <A
HREF="sdlaudiospec.html"
><SPAN
CLASS="STRUCTNAME"
>SDL_AudioSpec</SPAN
></A
> must be created.
<PRE
CLASS="PROGRAMLISTING"
>SDL_AudioSpec *desired;
.
.
desired = malloc(sizeof(SDL_AudioSpec));</PRE
>
You must then fill this structure with your desired audio specifications.</P
><P
></P
><DIV
CLASS="VARIABLELIST"
><DL
><DT
><SPAN
CLASS="STRUCTNAME"
>desired</SPAN
>-&#62;<TT
CLASS="STRUCTFIELD"
><I
>freq</I
></TT
></DT
><DD
><P
>The desired audio frequency in samples-per-second.</P
></DD
><DT
><SPAN
CLASS="STRUCTNAME"
>desired</SPAN
>-&#62;<TT
CLASS="STRUCTFIELD"
><I
>format</I
></TT
></DT
><DD
><P
>The desired audio format (see <A
HREF="sdlaudiospec.html"
><SPAN
CLASS="STRUCTNAME"
>SDL_AudioSpec</SPAN
></A
>)</P
></DD
><DT
><SPAN
CLASS="STRUCTNAME"
>desired</SPAN
>-&#62;<TT
CLASS="STRUCTFIELD"
><I
>samples</I
></TT
></DT
><DD
><P
>The desired size of the audio buffer in samples. This number should be a power of two, and may be adjusted by the audio driver to a value more suitable for the hardware.  Good values seem to range between 512 and 8192 inclusive, depending on the application and CPU speed.  Smaller values yield faster response time, but can lead to underflow if the application is doing heavy processing and cannot fill the audio buffer in time.  A stereo sample consists of both right and left channels in LR ordering.  Note that the number of samples is directly related to time by the following formula:  ms = (samples*1000)/freq</P
></DD
><DT
><SPAN
CLASS="STRUCTNAME"
>desired</SPAN
>-&#62;<TT
CLASS="STRUCTFIELD"
><I
>callback</I
></TT
></DT
><DD
><P
>This should be set to a function that will be called when the audio device is ready for more data.  It is passed a pointer to the audio buffer, and the length in bytes of the audio buffer. This function usually runs in a separate thread, and so you should protect data structures that it accesses by calling <A
HREF="sdllockaudio.html"
><TT
CLASS="FUNCTION"
>SDL_LockAudio</TT
></A
> and <A
HREF="sdlunlockaudio.html"
><TT
CLASS="FUNCTION"
>SDL_UnlockAudio</TT
></A
> in your code. The callback prototype is:
<PRE
CLASS="PROGRAMLISTING"
>void callback(void *userdata, Uint8 *stream, int len);</PRE
>
<TT
CLASS="PARAMETER"
><I
>userdata</I
></TT
> is the pointer stored in <TT
CLASS="STRUCTFIELD"
><I
>userdata</I
></TT
> field of the <SPAN
CLASS="STRUCTNAME"
>SDL_AudioSpec</SPAN
>. <TT
CLASS="PARAMETER"
><I
>stream</I
></TT
> is a pointer to the audio buffer you want to fill with information and <TT
CLASS="PARAMETER"
><I
>len</I
></TT
> is the length of the audio buffer in bytes.</P
></DD
><DT
><SPAN
CLASS="STRUCTNAME"
>desired</SPAN
>-&#62;<TT
CLASS="STRUCTFIELD"
><I
>userdata</I
></TT
></DT
><DD
><P
>This pointer is passed as the first parameter to the <TT
CLASS="FUNCTION"
>callback</TT
> function.</P
></DD
></DL
></DIV
><P
><TT
CLASS="FUNCTION"
>SDL_OpenAudio</TT
> reads these fields from the <TT
CLASS="PARAMETER"
><I
>desired</I
></TT
> <SPAN
CLASS="STRUCTNAME"
>SDL_AudioSpec</SPAN
> structure pass to the function and attempts to find an audio configuration matching your <TT
CLASS="PARAMETER"
><I
>desired</I
></TT
>. As mentioned above, if the <TT
CLASS="PARAMETER"
><I
>obtained</I
></TT
> parameter is <TT
CLASS="LITERAL"
>NULL</TT
> then SDL with convert from your <TT
CLASS="PARAMETER"
><I
>desired</I
></TT
> audio settings to the hardware settings as it plays.</P
><P
>If <TT
CLASS="PARAMETER"
><I
>obtained</I
></TT
> is <TT
CLASS="LITERAL"
>NULL</TT
> then the <TT
CLASS="PARAMETER"
><I
>desired</I
></TT
> <SPAN
CLASS="STRUCTNAME"
>SDL_AudioSpec</SPAN
> is your working specification, otherwise the <TT
CLASS="PARAMETER"
><I
>obtained</I
></TT
> <SPAN
CLASS="STRUCTNAME"
>SDL_AudioSpec</SPAN
> becomes the working specification and the <TT
CLASS="PARAMETER"
><I
>desirec</I
></TT
> specification can be deleted. The data in the working specification is used when building <SPAN
CLASS="STRUCTNAME"
>SDL_AudioCVT</SPAN
>'s for converting loaded data to the hardware format.</P
><P
><TT
CLASS="FUNCTION"
>SDL_OpenAudio</TT
> calculates the <TT
CLASS="STRUCTFIELD"
><I
>size</I
></TT
> and <TT
CLASS="STRUCTFIELD"
><I
>silence</I
></TT
> fields for both the <TT
CLASS="PARAMETER"
><I
>desired</I
></TT
> and <TT
CLASS="PARAMETER"
><I
>obtained</I
></TT
> specifications. The <TT
CLASS="STRUCTFIELD"
><I
>size</I
></TT
> field stores the total size of the audio buffer in bytes, while the <TT
CLASS="STRUCTFIELD"
><I
>silence</I
></TT
> stores the value used to represent silence in the audio buffer</P
><P
>The audio device starts out playing <TT
CLASS="STRUCTFIELD"
><I
>silence</I
></TT
> when it's opened, and should be enabled for playing by calling <A
HREF="sdlpauseaudio.html"
><TT
CLASS="FUNCTION"
>SDL_PauseAudio</TT
>(<TT
CLASS="PARAMETER"
><I
>0</I
></TT
>)</A
> when you are ready for your audio <TT
CLASS="STRUCTFIELD"
><I
>callback</I
></TT
> function to be called.  Since the audio driver may modify the requested <TT
CLASS="STRUCTFIELD"
><I
>size</I
></TT
> of the audio buffer, you should allocate any local mixing buffers after you open the audio device.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN6747"
></A
><H2
>Examples</H2
><PRE
CLASS="PROGRAMLISTING"
>/* Prototype of our callback function */
void my_audio_callback(void *userdata, Uint8 *stream, int len);

/* Open the audio device */
SDL_AudioSpec *desired, *obtained;
SDL_AudioSpec *hardware_spec;

/* Allocate a desired SDL_AudioSpec */
desired = malloc(sizeof(SDL_AudioSpec));

/* Allocate space for the obtained SDL_AudioSpec */
obtained = malloc(sizeof(SDL_AudioSpec));

/* 22050Hz - FM Radio quality */
desired-&#62;freq=22050;

/* 16-bit signed audio */
desired-&#62;format=AUDIO_S16LSB;

/* Mono */
desired-&#62;channels=0;

/* Large audio buffer reduces risk of dropouts but increases response time */
desired-&#62;samples=8192;

/* Our callback function */
desired-&#62;callback=my_audio_callback;

desired-&#62;userdata=NULL;

/* Open the audio device */
if ( SDL_OpenAudio(desired, obtained) &#60; 0 ){
  fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
  exit(-1);
}
/* desired spec is no longer needed */
free(desired);
hardware_spec=obtained;
.
.
/* Prepare callback for playing */
.
.
.
/* Start playing */
SDL_PauseAudio(0);</PRE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN6750"
></A
><H2
>See Also</H2
><P
><A
HREF="sdlaudiospec.html"
><TT
CLASS="FUNCTION"
>SDL_AudioSpec</TT
></A
>,
<A
HREF="sdllockaudio.html"
><TT
CLASS="FUNCTION"
>SDL_LockAudio</TT
></A
>,
<A
HREF="sdlunlockaudio.html"
><TT
CLASS="FUNCTION"
>SDL_UnlockAudio</TT
></A
>,
<A
HREF="sdlpauseaudio.html"
><TT
CLASS="FUNCTION"
>SDL_PauseAudio</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="sdlaudiospec.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="sdlpauseaudio.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>SDL_AudioSpec</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_PauseAudio</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>