<HTML
><HEAD
><TITLE
>SDL_LoadWAV</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_GetAudioStatus"
HREF="sdlgetaudiostatus.html"><LINK
REL="NEXT"
TITLE="SDL_FreeWAV"
HREF="sdlfreewav.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="sdlgetaudiostatus.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="sdlfreewav.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><H1
><A
NAME="SDLLOADWAV"
></A
>SDL_LoadWAV</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN6816"
></A
><H2
>Name</H2
>SDL_LoadWAV&nbsp;--&nbsp;Load a WAVE file</DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN6819"
></A
><H2
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><A
NAME="AEN6820"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include "SDL.h"</PRE
><P
><CODE
><CODE
CLASS="FUNCDEF"
>SDL_AudioSpec *<B
CLASS="FSFUNC"
>SDL_LoadWAV</B
></CODE
>(const char *file, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len);</CODE
></P
><P
></P
></DIV
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN6826"
></A
><H2
>Description</H2
><P
><TT
CLASS="FUNCTION"
>SDL_LoadWAV</TT
>
This function loads a WAVE <TT
CLASS="PARAMETER"
><I
>file</I
></TT
> into memory.</P
><P
>If this function succeeds, it returns the given 
<A
HREF="sdlaudiospec.html"
><TT
CLASS="FUNCTION"
>SDL_AudioSpec</TT
></A
>, 
filled with the audio data format of the wave data, and sets 
<TT
CLASS="PARAMETER"
><I
>audio_buf</I
></TT
> to a <TT
CLASS="FUNCTION"
>malloc</TT
>'d 
buffer containing the audio data, and sets <TT
CLASS="PARAMETER"
><I
>audio_len</I
></TT
> 
to the length of that audio buffer, in bytes.  You need to free the audio 
buffer with <A
HREF="sdlfreewav.html"
><TT
CLASS="FUNCTION"
>SDL_FreeWAV</TT
></A
> when you are
done with it.</P
><P
>This function returns <TT
CLASS="LITERAL"
>NULL</TT
> and sets the SDL 
error message if the wave file cannot be opened, uses an unknown data format, 
or is corrupt.  Currently raw, MS-ADPCM and IMA-ADPCM WAVE files are supported.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN6841"
></A
><H2
>Example</H2
><PRE
CLASS="PROGRAMLISTING"
>SDL_AudioSpec wav_spec;
Uint32 wav_length;
Uint8 *wav_buffer;

/* Load the WAV */
if( SDL_LoadWAV("test.wav", &#38;wav_spec, &#38;wav_buffer, &#38;wav_length) == NULL ){
  fprintf(stderr, "Could not open test.wav: %s\n", SDL_GetError());
  exit(-1);
}
.
.
.
/* Do stuff with the WAV */
.
.
/* Free It */
SDL_FreeWAV(wav_buffer);</PRE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN6844"
></A
><H2
>See Also</H2
><P
><A
HREF="sdlaudiospec.html"
><SPAN
CLASS="STRUCTNAME"
>SDL_AudioSpec</SPAN
></A
>,
<A
HREF="sdlopenaudio.html"
><TT
CLASS="FUNCTION"
>SDL_OpenAudio</TT
></A
>,
<A
HREF="sdlfreewav.html"
><TT
CLASS="FUNCTION"
>SDL_FreeWAV</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="sdlgetaudiostatus.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="sdlfreewav.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>SDL_GetAudioStatus</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_FreeWAV</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>