Mercurial > sdl-ios-xcode
diff docs/html/guideaudioexamples.html @ 0:74212992fb08
Initial revision
author | Sam Lantinga <slouken@lokigames.com> |
---|---|
date | Thu, 26 Apr 2001 16:45:43 +0000 |
parents | |
children | 55f1f1b3e27d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/html/guideaudioexamples.html Thu Apr 26 16:45:43 2001 +0000 @@ -0,0 +1,220 @@ +<HTML +><HEAD +><TITLE +>Audio Examples</TITLE +><META +NAME="GENERATOR" +CONTENT="Modular DocBook HTML Stylesheet Version 1.61 +"><LINK +REL="HOME" +TITLE="SDL Library Documentation" +HREF="index.html"><LINK +REL="UP" +TITLE="Examples" +HREF="guideexamples.html"><LINK +REL="PREVIOUS" +TITLE="Event Examples" +HREF="guideeventexamples.html"><LINK +REL="NEXT" +TITLE="CDROM Examples" +HREF="guidecdromexamples.html"></HEAD +><BODY +CLASS="SECT1" +BGCOLOR="#FFF8DC" +TEXT="#000000" +LINK="#0000ee" +VLINK="#551a8b" +ALINK="#ff0000" +><DIV +CLASS="NAVHEADER" +><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="guideeventexamples.html" +>Prev</A +></TD +><TD +WIDTH="80%" +ALIGN="center" +VALIGN="bottom" +>Chapter 4. Examples</TD +><TD +WIDTH="10%" +ALIGN="right" +VALIGN="bottom" +><A +HREF="guidecdromexamples.html" +>Next</A +></TD +></TR +></TABLE +><HR +ALIGN="LEFT" +WIDTH="100%"></DIV +><DIV +CLASS="SECT1" +><H1 +CLASS="SECT1" +><A +NAME="GUIDEAUDIOEXAMPLES" +>Audio Examples</A +></H1 +><P +></P +><DIV +CLASS="SECT2" +><H2 +CLASS="SECT2" +><A +NAME="AEN343" +>Opening the audio device</A +></H2 +><P +><PRE +CLASS="PROGRAMLISTING" +> SDL_AudioSpec wanted; + extern void fill_audio(void *udata, Uint8 *stream, int len); + + /* Set the audio format */ + wanted.freq = 22050; + wanted.format = AUDIO_S16; + wanted.channels = 2; /* 1 = mono, 2 = stereo */ + wanted.samples = 1024; /* Good low-latency value for callback */ + wanted.callback = fill_audio; + wanted.userdata = NULL; + + /* Open the audio device, forcing the desired format */ + if ( SDL_OpenAudio(&wanted, NULL) < 0 ) { + fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError()); + return(-1); + } + return(0);</PRE +></P +></DIV +><DIV +CLASS="SECT2" +><H2 +CLASS="SECT2" +><A +NAME="AEN347" +>Playing audio</A +></H2 +><P +><PRE +CLASS="PROGRAMLISTING" +> static Uint8 *audio_chunk; + static Uint32 audio_len; + static Uint8 *audio_pos; + + /* The audio function callback takes the following parameters: + stream: A pointer to the audio buffer to be filled + len: The length (in bytes) of the audio buffer + */ + void fill_audio(void *udata, Uint8 *stream, int len) + { + /* Only play if we have data left */ + if ( audio_len == 0 ) + return; + + /* Mix as much data as possible */ + len = ( len > audio_len ? audio_len : len ); + SDL_MixAudio(stream, audio_pos, len, SDL_MIX_MAXVOLUME) + audio_pos += len; + audio_len -= len; + } + + /* Load the audio data ... */ + + ;;;;; + + audio_pos = audio_chunk; + + /* Let the callback function play the audio chunk */ + SDL_PauseAudio(0); + + /* Do some processing */ + + ;;;;; + + /* Wait for sound to complete */ + while ( audio_len > 0 ) { + SDL_Delay(100); /* Sleep 1/10 second */ + } + SDL_CloseAudio();</PRE +></P +></DIV +></DIV +><DIV +CLASS="NAVFOOTER" +><HR +ALIGN="LEFT" +WIDTH="100%"><TABLE +WIDTH="100%" +BORDER="0" +CELLPADDING="0" +CELLSPACING="0" +><TR +><TD +WIDTH="33%" +ALIGN="left" +VALIGN="top" +><A +HREF="guideeventexamples.html" +>Prev</A +></TD +><TD +WIDTH="34%" +ALIGN="center" +VALIGN="top" +><A +HREF="index.html" +>Home</A +></TD +><TD +WIDTH="33%" +ALIGN="right" +VALIGN="top" +><A +HREF="guidecdromexamples.html" +>Next</A +></TD +></TR +><TR +><TD +WIDTH="33%" +ALIGN="left" +VALIGN="top" +>Event Examples</TD +><TD +WIDTH="34%" +ALIGN="center" +VALIGN="top" +><A +HREF="guideexamples.html" +>Up</A +></TD +><TD +WIDTH="33%" +ALIGN="right" +VALIGN="top" +>CDROM Examples</TD +></TR +></TABLE +></DIV +></BODY +></HTML +> \ No newline at end of file