_headers/SoundStruct.h

/*
    File:       SoundStruct.h
 
    Contains:   Structure that contains all the needed information for playing a sound.
 
    Written by: Mark Cookson    
 
    Copyright:  Copyright © 1996-1999 by Apple Computer, Inc., All Rights Reserved.
 
                You may incorporate this Apple sample source code into your program(s) without
                restriction. This Apple sample source code has been provided "AS IS" and the
                responsibility for its operation is yours. You are not permitted to redistribute
                this Apple sample source code as "Apple sample source code" after having made
                changes. If you're going to re-distribute the source, we require that you make
                it clear in the source that the code was descended from Apple sample source
                code, but that you've made changes.
 
    Change History (most recent first):
                8/31/1999   Karl Groethe    Updated for Metrowerks Codewarror Pro 2.1
                
 
*/
 
#ifndef __SOUNDSTRUCT__
#define __SOUNDSTRUCT__
 
#include <Files.h>
#include <Sound.h>
 
struct sGlobals {
    long        ggestaltSoundAttr,
                ggestaltStandardFileAttr,
                ggestaltTranslationAttr;
    Boolean     gSupports16Bit,
                gSupportsSPDB;
};
 
typedef struct sGlobals sGlobals;
typedef sGlobals *sGlobalsPtr;
 
/*
    This giant structure is in seperate file because it is trying to be
    hidden from view.  In fact there are accessor functions for most values,
    and you should use those accessors.  If you are using DBFF.h a SoundInfoPtr
    is typedef'ed to just a Ptr so that you can't see any of these fields.
*/
struct SoundInfo {
    unsigned long           signature;
    Str63                   theName;
    SndDoubleBufferHeader2  doubleHeader;
    SndChannelPtr           chan;
    SndCallBackUPP          theSoundCallBackUPP;
    sGlobals                globals;
    Fixed                   rateForResume;
    unsigned long           fileType;
    long                    numBuffers,
                            dataStart,
                            bytesTotal,
                            bytesCopied,
                            currentBuffer,
                            doubleBufferSize;
    short                   bytesPerFrame,
                            refNum,
                            vRefNum,
                            compFactor;
    Boolean                 paused,
                            playing,
                            adjusting,
                            soundDone,
                            backwards,
                            hasBeenAdjusted,
                            needsMasking,
                            stopping;
};
 
typedef struct SoundInfo SoundInfo;
typedef SoundInfo *SoundInfoPtr;
 
/*
    This is used to carry useful information to our interrupt routines.
    I wouldn't remove any fields from this structure.
*/
struct myParamBlockRec {
    ParamBlockRec           pb;
    long                    myA5;
    SndDoubleBufferPtr      theBuffer;
    SoundInfoPtr            theSoundInfo;
    Boolean                 pbInUse;
};
 
typedef struct myParamBlockRec myParamBlockRec;
typedef myParamBlockRec *myParmBlkPtr;
 
#endif