Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.     SDL - Simple DirectMedia Layer
  3.     Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga
  4.  
  5.     This library is free software; you can redistribute it and/or
  6.     modify it under the terms of the GNU Library General Public
  7.     License as published by the Free Software Foundation; either
  8.     version 2 of the License, or (at your option) any later version.
  9.  
  10.     This library is distributed in the hope that it will be useful,
  11.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.     Library General Public License for more details.
  14.  
  15.     You should have received a copy of the GNU Library General Public
  16.     License along with this library; if not, write to the Free
  17.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18.  
  19.     Sam Lantinga
  20.     slouken@devolution.com
  21. */
  22.  
  23. #ifdef SAVE_RCSID
  24. static char rcsid =
  25.  "@(#) $Id: SDL_wave.h,v 1.2 2001/04/26 16:50:17 hercules Exp $";
  26. #endif
  27.  
  28. /* WAVE files are little-endian */
  29.  
  30. /*******************************************/
  31. /* Define values for Microsoft WAVE format */
  32. /*******************************************/
  33. #define RIFF            0x46464952              /* "RIFF" */
  34. #define WAVE            0x45564157              /* "WAVE" */
  35. #define FACT            0x74636166              /* "fact" */
  36. #define LIST            0x5453494c              /* "LIST" */
  37. #define FMT             0x20746D66              /* "fmt " */
  38. #define DATA            0x61746164              /* "data" */
  39. #define PCM_CODE        0x0001
  40. #define MS_ADPCM_CODE   0x0002
  41. #define IMA_ADPCM_CODE  0x0011
  42. #define WAVE_MONO       1
  43. #define WAVE_STEREO     2
  44.  
  45. /* Normally, these three chunks come consecutively in a WAVE file */
  46. typedef struct WaveFMT {
  47. /* Not saved in the chunk we read:
  48.         Uint32  FMTchunk;
  49.         Uint32  fmtlen;
  50. */
  51.         Uint16  encoding;      
  52.         Uint16  channels;               /* 1 = mono, 2 = stereo */
  53.         Uint32  frequency;              /* One of 11025, 22050, or 44100 Hz */
  54.         Uint32  byterate;               /* Average bytes per second */
  55.         Uint16  blockalign;             /* Bytes per sample block */
  56.         Uint16  bitspersample;          /* One of 8, 12, 16, or 4 for ADPCM */
  57. } WaveFMT;
  58.  
  59. /* The general chunk found in the WAVE file */
  60. typedef struct Chunk {
  61.         Uint32 magic;
  62.         Uint32 length;
  63.         Uint8 *data;                    /* Data includes magic and length */
  64. } Chunk;
  65.  
  66.