include/SDL_audio.h
author Darren Alton <dalton@stevens.edu>
Sat, 26 Jul 2008 05:52:59 +0000
branchgsoc2008_nds
changeset 2682 f7594fc66bda
parent 2049 5f6550e5184f
child 2655 b8e736c8a5a8
child 2720 4eb759edddf5
permissions -rw-r--r--
Some debug work on the video driver, shows an error in the BG's vertical placement
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     1
/*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     2
    SDL - Simple DirectMedia Layer
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 930
diff changeset
     3
    Copyright (C) 1997-2006 Sam Lantinga
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     4
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     5
    This library is free software; you can redistribute it and/or
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 930
diff changeset
     6
    modify it under the terms of the GNU Lesser General Public
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     7
    License as published by the Free Software Foundation; either
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 930
diff changeset
     8
    version 2.1 of the License, or (at your option) any later version.
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     9
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    10
    This library is distributed in the hope that it will be useful,
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 930
diff changeset
    13
    Lesser General Public License for more details.
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    14
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 930
diff changeset
    15
    You should have received a copy of the GNU Lesser General Public
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 930
diff changeset
    16
    License along with this library; if not, write to the Free Software
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 930
diff changeset
    17
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    18
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    19
    Sam Lantinga
251
b8688cfdc232 Updated the headers with the correct e-mail address
Sam Lantinga <slouken@libsdl.org>
parents: 188
diff changeset
    20
    slouken@libsdl.org
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    21
*/
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    22
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    23
/**
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    24
 * \file SDL_audio.h
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    25
 *
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    26
 * Access to the raw audio mixing buffer for the SDL library
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    27
 */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    28
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    29
#ifndef _SDL_audio_h
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    30
#define _SDL_audio_h
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    31
1353
7ba544e2888d Started the process of improving configure support, and merging C types
Sam Lantinga <slouken@libsdl.org>
parents: 1330
diff changeset
    32
#include "SDL_stdinc.h"
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    33
#include "SDL_error.h"
1358
c71e05b4dc2e More header massaging... works great on Windows. ;-)
Sam Lantinga <slouken@libsdl.org>
parents: 1356
diff changeset
    34
#include "SDL_endian.h"
c71e05b4dc2e More header massaging... works great on Windows. ;-)
Sam Lantinga <slouken@libsdl.org>
parents: 1356
diff changeset
    35
#include "SDL_mutex.h"
c71e05b4dc2e More header massaging... works great on Windows. ;-)
Sam Lantinga <slouken@libsdl.org>
parents: 1356
diff changeset
    36
#include "SDL_thread.h"
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    37
#include "SDL_rwops.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    38
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    39
#include "begin_code.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    40
/* Set up for C function definitions, even when using C++ */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    41
#ifdef __cplusplus
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    42
/* *INDENT-OFF* */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    43
extern "C" {
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    44
/* *INDENT-ON* */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    45
#endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    46
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    47
typedef Uint16 SDL_AudioFormat;
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    48
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    49
/* The calculated values in this structure are calculated by SDL_OpenAudio() */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    50
typedef struct SDL_AudioSpec
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    51
{
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    52
    int freq;                   /* DSP frequency -- samples per second */
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    53
    SDL_AudioFormat format;     /* Audio data format */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    54
    Uint8 channels;             /* Number of channels: 1 mono, 2 stereo */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    55
    Uint8 silence;              /* Audio buffer silence value (calculated) */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    56
    Uint16 samples;             /* Audio buffer size in samples (power of 2) */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    57
    Uint16 padding;             /* Necessary for some compile environments */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    58
    Uint32 size;                /* Audio buffer size in bytes (calculated) */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    59
    /* This function is called when the audio device needs more data.
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    60
       'stream' is a pointer to the audio data buffer
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    61
       'len' is the length of that buffer in bytes.
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    62
       Once the callback returns, the buffer will no longer be valid.
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    63
       Stereo samples are stored in a LRLRLR ordering.
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    64
     */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    65
    void (SDLCALL * callback) (void *userdata, Uint8 * stream, int len);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    66
    void *userdata;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    67
} SDL_AudioSpec;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    68
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    69
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    70
/*
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    71
 These are what the 16 bits in SDL_AudioFormat currently mean...
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    72
 (Unspecified bits are always zero.)
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    73
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    74
 ++-----------------------sample is signed if set
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    75
 ||
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    76
 ||       ++-----------sample is bigendian if set
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    77
 ||       ||
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    78
 ||       ||          ++---sample is float if set
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    79
 ||       ||          ||
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    80
 ||       ||          || +---sample bit size---+
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    81
 ||       ||          || |                     |
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    82
 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    83
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    84
 There are macros in SDL 1.3 and later to query these bits.
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    85
*/
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    86
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    87
#define SDL_AUDIO_MASK_BITSIZE       (0xFF)
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    88
#define SDL_AUDIO_MASK_DATATYPE      (1<<8)
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    89
#define SDL_AUDIO_MASK_ENDIAN        (1<<12)
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    90
#define SDL_AUDIO_MASK_SIGNED        (1<<15)
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    91
#define SDL_AUDIO_BITSIZE(x)         (x & SDL_AUDIO_MASK_BITSIZE)
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    92
#define SDL_AUDIO_ISFLOAT(x)         (x & SDL_AUDIO_MASK_DATATYPE)
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    93
#define SDL_AUDIO_ISBIGENDIAN(x)     (x & SDL_AUDIO_MASK_ENDIAN)
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    94
#define SDL_AUDIO_ISSIGNED(x)        (x & SDL_AUDIO_MASK_SIGNED)
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    95
#define SDL_AUDIO_ISINT(x)           (!SDL_AUDIO_ISFLOAT(x))
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    96
#define SDL_AUDIO_ISLITTLEENDIAN(x)  (!SDL_AUDIO_ISBIGENDIAN(x))
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    97
#define SDL_AUDIO_ISUNSIGNED(x)      (!SDL_AUDIO_ISSIGNED(x))
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
    98
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    99
/* Audio format flags (defaults to LSB byte order) */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   100
#define AUDIO_U8	0x0008  /* Unsigned 8-bit samples */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   101
#define AUDIO_S8	0x8008  /* Signed 8-bit samples */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   102
#define AUDIO_U16LSB	0x0010  /* Unsigned 16-bit samples */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   103
#define AUDIO_S16LSB	0x8010  /* Signed 16-bit samples */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   104
#define AUDIO_U16MSB	0x1010  /* As above, but big-endian byte order */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   105
#define AUDIO_S16MSB	0x9010  /* As above, but big-endian byte order */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   106
#define AUDIO_U16	AUDIO_U16LSB
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   107
#define AUDIO_S16	AUDIO_S16LSB
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   108
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   109
/* int32 support new to SDL 1.3 */
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   110
#define AUDIO_S32LSB	0x8020  /* 32-bit integer samples */
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   111
#define AUDIO_S32MSB	0x9020  /* As above, but big-endian byte order */
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   112
#define AUDIO_S32	AUDIO_S32LSB
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   113
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   114
/* float32 support new to SDL 1.3 */
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   115
#define AUDIO_F32LSB	0x8120  /* 32-bit floating point samples */
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   116
#define AUDIO_F32MSB	0x9120  /* As above, but big-endian byte order */
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   117
#define AUDIO_F32	AUDIO_F32LSB
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   118
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   119
/* Native audio byte ordering */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   120
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   121
#define AUDIO_U16SYS	AUDIO_U16LSB
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   122
#define AUDIO_S16SYS	AUDIO_S16LSB
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   123
#define AUDIO_S32SYS	AUDIO_S32LSB
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   124
#define AUDIO_F32SYS	AUDIO_F32LSB
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   125
#else
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   126
#define AUDIO_U16SYS	AUDIO_U16MSB
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   127
#define AUDIO_S16SYS	AUDIO_S16MSB
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   128
#define AUDIO_S32SYS	AUDIO_S32MSB
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   129
#define AUDIO_F32SYS	AUDIO_F32MSB
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   130
#endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   131
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   132
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   133
/* A structure to hold a set of audio conversion filters and buffers */
1983
ee73925ddf14 Forgot to check in updated SDL_audio.h ...
Ryan C. Gordon <icculus@icculus.org>
parents: 1967
diff changeset
   134
struct SDL_AudioCVT;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1983
diff changeset
   135
typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt,
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1983
diff changeset
   136
                                          SDL_AudioFormat format);
1983
ee73925ddf14 Forgot to check in updated SDL_audio.h ...
Ryan C. Gordon <icculus@icculus.org>
parents: 1967
diff changeset
   137
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   138
typedef struct SDL_AudioCVT
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   139
{
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1983
diff changeset
   140
    int needed;                 /* Set to 1 if conversion possible */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1983
diff changeset
   141
    SDL_AudioFormat src_format; /* Source audio format */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1983
diff changeset
   142
    SDL_AudioFormat dst_format; /* Target audio format */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1983
diff changeset
   143
    double rate_incr;           /* Rate conversion increment */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1983
diff changeset
   144
    Uint8 *buf;                 /* Buffer to hold entire audio data */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1983
diff changeset
   145
    int len;                    /* Length of original audio buffer */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1983
diff changeset
   146
    int len_cvt;                /* Length of converted audio buffer */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1983
diff changeset
   147
    int len_mult;               /* buffer must be len*len_mult big */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1983
diff changeset
   148
    double len_ratio;           /* Given len, final size is len*len_ratio */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1983
diff changeset
   149
    SDL_AudioFilter filters[10];        /* Filter list */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1983
diff changeset
   150
    int filter_index;           /* Current audio conversion function */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   151
} SDL_AudioCVT;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   152
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   153
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   154
/* Function prototypes */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   155
2049
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   156
/* These functions return the list of built in audio drivers, in the
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   157
 * order that they are normally initialized by default.
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   158
 */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   159
extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   160
extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   161
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   162
/* These functions are used internally, and should not be used unless you
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   163
 * have a specific need to specify the audio driver you want to use.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   164
 * You should normally use SDL_Init() or SDL_InitSubSystem().
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   165
 */
337
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
   166
extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name);
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
   167
extern DECLSPEC void SDLCALL SDL_AudioQuit(void);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   168
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   169
/* This function returns the name of the current audio driver, or NULL
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   170
 * if no driver has been initialized.
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   171
 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   172
extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   173
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   174
/*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   175
 * This function opens the audio device with the desired parameters, and
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   176
 * returns 0 if successful, placing the actual hardware parameters in the
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   177
 * structure pointed to by 'obtained'.  If 'obtained' is NULL, the audio
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   178
 * data passed to the callback function will be guaranteed to be in the
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   179
 * requested format, and will be automatically converted to the hardware
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   180
 * audio format if necessary.  This function returns -1 if it failed 
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   181
 * to open the audio device, or couldn't set up the audio thread.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   182
 *
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   183
 * When filling in the desired audio spec structure,
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   184
 *  'desired->freq' should be the desired audio frequency in samples-per-second.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   185
 *  'desired->format' should be the desired audio format.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   186
 *  'desired->samples' is the desired size of the audio buffer, in samples.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   187
 *     This number should be a power of two, and may be adjusted by the audio
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   188
 *     driver to a value more suitable for the hardware.  Good values seem to
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   189
 *     range between 512 and 8096 inclusive, depending on the application and
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   190
 *     CPU speed.  Smaller values yield faster response time, but can lead
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   191
 *     to underflow if the application is doing heavy processing and cannot
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   192
 *     fill the audio buffer in time.  A stereo sample consists of both right
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   193
 *     and left channels in LR ordering.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   194
 *     Note that the number of samples is directly related to time by the
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   195
 *     following formula:  ms = (samples*1000)/freq
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   196
 *  'desired->size' is the size in bytes of the audio buffer, and is
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   197
 *     calculated by SDL_OpenAudio().
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   198
 *  'desired->silence' is the value used to set the buffer to silence,
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   199
 *     and is calculated by SDL_OpenAudio().
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   200
 *  'desired->callback' should be set to a function that will be called
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   201
 *     when the audio device is ready for more data.  It is passed a pointer
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   202
 *     to the audio buffer, and the length in bytes of the audio buffer.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   203
 *     This function usually runs in a separate thread, and so you should
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   204
 *     protect data structures that it accesses by calling SDL_LockAudio()
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   205
 *     and SDL_UnlockAudio() in your code.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   206
 *  'desired->userdata' is passed as the first parameter to your callback
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   207
 *     function.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   208
 *
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   209
 * The audio device starts out playing silence when it's opened, and should
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   210
 * be enabled for playing by calling SDL_PauseAudio(0) when you are ready
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   211
 * for your audio callback function to be called.  Since the audio driver
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   212
 * may modify the requested size of the audio buffer, you should allocate
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   213
 * any local mixing buffers after you open the audio device.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   214
 */
2049
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   215
extern DECLSPEC int SDLCALL SDL_OpenAudio(const SDL_AudioSpec * desired,
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   216
                                          SDL_AudioSpec * obtained);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   217
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   218
/*
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   219
 * SDL Audio Device IDs.
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   220
 * A successful call to SDL_OpenAudio() is always device id 1, and legacy
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   221
 *  SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   222
 *  always returns devices >= 2 on success. The legacy calls are good both
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   223
 *  for backwards compatibility and when you don't care about multiple,
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   224
 *  specific, or capture devices.
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   225
 */
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   226
typedef Uint32 SDL_AudioDeviceID;
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   227
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   228
/*
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   229
 * Get the number of available devices exposed by the current driver.
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   230
 *  Only valid after a successfully initializing the audio subsystem.
2049
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   231
 *  Returns -1 if an explicit list of devices can't be determined; this is
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   232
 *  not an error. For example, if SDL is set up to talk to a remote audio
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   233
 *  server, it can't list every one available on the Internet, but it will
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   234
 *  still allow a specific host to be specified to SDL_OpenAudioDevice().
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   235
 * In many common cases, when this function returns a value <= 0, it can still
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   236
 *  successfully open the default device (NULL for first argument of
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   237
 *  SDL_OpenAudioDevice()).
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   238
 */
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   239
extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture);
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   240
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   241
/*
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   242
 * Get the human-readable name of a specific audio device.
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   243
 *  Must be a value between 0 and (number of audio devices-1).
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   244
 *  Only valid after a successfully initializing the audio subsystem.
2049
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   245
 *  The values returned by this function reflect the latest call to
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   246
 *  SDL_GetNumAudioDevices(); recall that function to redetect available
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   247
 *  hardware.
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   248
 *
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   249
 * The string returned by this function is UTF-8 encoded, read-only, and
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   250
 *  managed internally. You are not to free it. If you need to keep the
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   251
 *  string for any length of time, you should make your own copy of it, as it
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   252
 *  will be invalid next time any of several other SDL functions is called.
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   253
 */
2049
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   254
extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index,
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   255
                                                           int iscapture);
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   256
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   257
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   258
/*
2049
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   259
 * Open a specific audio device. Passing in a device name of NULL requests
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   260
 *  the most reasonable default (and is equivalent to calling SDL_OpenAudio()).
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   261
 * The device name is a UTF-8 string reported by SDL_GetAudioDevice(), but
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   262
 *  some drivers allow arbitrary and driver-specific strings, such as a
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   263
 *  hostname/IP address for a remote audio server, or a filename in the
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   264
 *  diskaudio driver.
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   265
 * Returns 0 on error, a valid device ID that is >= 2 on success.
5f6550e5184f Merged SDL-ryan-multiple-audio-device branch r2803:2871 into the trunk.
Ryan C. Gordon <icculus@icculus.org>
parents: 1985
diff changeset
   266
 *  SDL_OpenAudio(), unlike this function, always acts on device ID 1.
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   267
 */
1967
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1964
diff changeset
   268
extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice(const char
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1964
diff changeset
   269
                                                              *device,
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1964
diff changeset
   270
                                                              int iscapture,
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1964
diff changeset
   271
                                                              const
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1964
diff changeset
   272
                                                              SDL_AudioSpec *
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1964
diff changeset
   273
                                                              desired,
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1964
diff changeset
   274
                                                              SDL_AudioSpec *
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1964
diff changeset
   275
                                                              obtained);
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   276
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   277
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   278
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   279
/*
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   280
 * Get the current audio state:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   281
 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   282
typedef enum
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   283
{
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   284
    SDL_AUDIO_STOPPED = 0,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   285
    SDL_AUDIO_PLAYING,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   286
    SDL_AUDIO_PAUSED
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   287
} SDL_audiostatus;
337
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
   288
extern DECLSPEC SDL_audiostatus SDLCALL SDL_GetAudioStatus(void);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   289
1967
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1964
diff changeset
   290
extern DECLSPEC SDL_audiostatus SDLCALL
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1964
diff changeset
   291
SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev);
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   292
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   293
/*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   294
 * This function pauses and unpauses the audio callback processing.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   295
 * It should be called with a parameter of 0 after opening the audio
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   296
 * device to start playing sound.  This is so you can safely initialize
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   297
 * data for your callback function after opening the audio device.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   298
 * Silence will be written to the audio device during the pause.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   299
 */
337
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
   300
extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on);
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   301
extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   302
                                                  int pause_on);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   303
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   304
/*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   305
 * This function loads a WAVE from the data source, automatically freeing
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   306
 * that source if 'freesrc' is non-zero.  For example, to load a WAVE file,
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   307
 * you could do:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   308
 *	SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, ...);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   309
 *
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   310
 * If this function succeeds, it returns the given SDL_AudioSpec,
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   311
 * filled with the audio data format of the wave data, and sets
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   312
 * 'audio_buf' to a malloc()'d buffer containing the audio data,
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   313
 * and sets 'audio_len' to the length of that audio buffer, in bytes.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   314
 * You need to free the audio buffer with SDL_FreeWAV() when you are 
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   315
 * done with it.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   316
 *
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   317
 * This function returns NULL and sets the SDL error message if the 
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   318
 * wave file cannot be opened, uses an unknown data format, or is 
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   319
 * corrupt.  Currently raw and MS-ADPCM WAVE files are supported.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   320
 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   321
extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   322
                                                      int freesrc,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   323
                                                      SDL_AudioSpec * spec,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   324
                                                      Uint8 ** audio_buf,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   325
                                                      Uint32 * audio_len);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   326
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   327
/* Compatibility convenience function -- loads a WAV from a file */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   328
#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   329
	SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   330
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   331
/*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   332
 * This function frees data previously allocated with SDL_LoadWAV_RW()
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   333
 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   334
extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   335
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   336
/*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   337
 * This function takes a source format and rate and a destination format
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   338
 * and rate, and initializes the 'cvt' structure with information needed
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   339
 * by SDL_ConvertAudio() to convert a buffer of audio data from one format
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   340
 * to the other.
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   341
 * Returns -1 if the format conversion is not supported, 0 if there's
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   342
 *  no conversion needed, or 1 if the audio filter is set up.
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   343
 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   344
extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt,
1983
ee73925ddf14 Forgot to check in updated SDL_audio.h ...
Ryan C. Gordon <icculus@icculus.org>
parents: 1967
diff changeset
   345
                                              SDL_AudioFormat src_format,
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   346
                                              Uint8 src_channels,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   347
                                              int src_rate,
1983
ee73925ddf14 Forgot to check in updated SDL_audio.h ...
Ryan C. Gordon <icculus@icculus.org>
parents: 1967
diff changeset
   348
                                              SDL_AudioFormat dst_format,
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   349
                                              Uint8 dst_channels,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   350
                                              int dst_rate);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   351
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   352
/* Once you have initialized the 'cvt' structure using SDL_BuildAudioCVT(),
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   353
 * created an audio buffer cvt->buf, and filled it with cvt->len bytes of
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   354
 * audio data in the source format, this function will convert it in-place
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   355
 * to the desired format.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   356
 * The data conversion may expand the size of the audio data, so the buffer
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   357
 * cvt->buf should be allocated after the cvt structure is initialized by
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   358
 * SDL_BuildAudioCVT(), and should be cvt->len*cvt->len_mult bytes long.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   359
 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   360
extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   361
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   362
/*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   363
 * This takes two audio buffers of the playing audio format and mixes
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   364
 * them, performing addition, volume adjustment, and overflow clipping.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   365
 * The volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   366
 * for full audio volume.  Note this does not change hardware volume.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   367
 * This is provided for convenience -- you can mix your own audio data.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   368
 */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   369
#define SDL_MIX_MAXVOLUME 128
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   370
extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   371
                                          Uint32 len, int volume);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   372
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   373
/*
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   374
 * This works like SDL_MixAudio, but you specify the audio format instead of
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   375
 *  using the format of audio device 1. Thus it can be used when no audio
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   376
 *  device is open at all.
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   377
 */
1967
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1964
diff changeset
   378
extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst,
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1964
diff changeset
   379
                                                const Uint8 * src,
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   380
                                                SDL_AudioFormat format,
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   381
                                                Uint32 len, int volume);
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   382
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   383
/*
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   384
 * The lock manipulated by these functions protects the callback function.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   385
 * During a LockAudio/UnlockAudio pair, you can be guaranteed that the
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   386
 * callback function is not running.  Do not call these from the callback
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   387
 * function or you will cause deadlock.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   388
 */
337
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
   389
extern DECLSPEC void SDLCALL SDL_LockAudio(void);
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   390
extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev);
337
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
   391
extern DECLSPEC void SDLCALL SDL_UnlockAudio(void);
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   392
extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   393
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   394
/*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   395
 * This function shuts down audio processing and closes the audio device.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   396
 */
337
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
   397
extern DECLSPEC void SDLCALL SDL_CloseAudio(void);
1964
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   398
extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev);
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   399
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   400
/*
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   401
 * Returns 1 if audio device is still functioning, zero if not, -1 on error.
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   402
 */
071b6598d48f 1.3 API proposals for audio subsystem. Nothing in here is guaranteed to
Ryan C. Gordon <icculus@icculus.org>
parents: 1895
diff changeset
   403
extern DECLSPEC int SDLCALL SDL_AudioDeviceConnected(SDL_AudioDeviceID dev);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   404
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   405
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   406
/* Ends C function definitions when using C++ */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   407
#ifdef __cplusplus
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   408
/* *INDENT-OFF* */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   409
}
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   410
/* *INDENT-ON* */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   411
#endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   412
#include "close_code.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   413
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   414
#endif /* _SDL_audio_h */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   415
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
   416
/* vi: set ts=4 sw=4 expandtab: */