⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 audiofileplayer.h

📁 SDL库 在进行视频显示程序spcaview安装时必须的库文件
💻 H
字号:
/*    SDL - Simple DirectMedia Layer    Copyright (C) 1997-2004 Sam Lantinga    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Library General Public    License as published by the Free Software Foundation; either    version 2 of the License, or (at your option) any later version.    This library is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    Library General Public License for more details.    You should have received a copy of the GNU Library General Public    License along with this library; if not, write to the Free    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA    Sam Lantinga    slouken@libsdl.org    This file based on Apple sample code. We haven't changed the file name,     so if you want to see the original search for it on apple.com/developer*/#include "SDL_config.h"/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    AudioFilePlayer.h*/#ifndef __AudioFilePlayer_H__#define __AudioFilePlayer_H__#include <CoreServices/CoreServices.h>#include <AudioUnit/AudioUnit.h>#ifdef AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER#include <AudioUnit/AUNTComponent.h>#endif#include "SDL_error.h"const char* AudioFilePlayerErrorStr (OSStatus error);/*void ThrowResult (OSStatus result, const char *str);#define THROW_RESULT(str)                                       \    if (result) {                                               \        ThrowResult (result, str);                              \    }*/typedef void (*AudioFilePlayNotifier)(void          *inRefCon,                                    OSStatus        inStatus);enum {    kAudioFilePlayErr_FilePlayUnderrun = -10000,    kAudioFilePlay_FileIsFinished = -10001,    kAudioFilePlay_PlayerIsUninitialized = -10002};struct S_AudioFileManager;#pragma mark __________ AudioFilePlayertypedef struct S_AudioFilePlayer{/*public:*/    int             (*SetDestination)(struct S_AudioFilePlayer *afp, AudioUnit *inDestUnit);    void            (*SetNotifier)(struct S_AudioFilePlayer *afp, AudioFilePlayNotifier inNotifier, void *inRefCon);    void            (*SetStartFrame)(struct S_AudioFilePlayer *afp, int frame); /* seek in the file */    int             (*GetCurrentFrame)(struct S_AudioFilePlayer *afp); /* get the current frame position */    void            (*SetStopFrame)(struct S_AudioFilePlayer *afp, int frame);   /* set limit in the file */    int             (*Connect)(struct S_AudioFilePlayer *afp);    void            (*Disconnect)(struct S_AudioFilePlayer *afp);    void            (*DoNotification)(struct S_AudioFilePlayer *afp, OSStatus inError);    int             (*IsConnected)(struct S_AudioFilePlayer *afp);    AudioUnit       (*GetDestUnit)(struct S_AudioFilePlayer *afp);    void            (*Print)(struct S_AudioFilePlayer *afp);/*private:*/    AudioUnit                       mPlayUnit;    SInt16                          mForkRefNum;        AudioUnitInputCallback          mInputCallback;    AudioStreamBasicDescription     mFileDescription;        int                             mConnected;        struct S_AudioFileManager*      mAudioFileManager;        AudioFilePlayNotifier           mNotifier;    void*                           mRefCon;        int                             mStartFrame;    #pragma mark __________ Private_Methods        int          (*OpenFile)(struct S_AudioFilePlayer *afp, const FSRef *inRef, SInt64 *outFileSize);} AudioFilePlayer;AudioFilePlayer *new_AudioFilePlayer(const FSRef    *inFileRef);void delete_AudioFilePlayer(AudioFilePlayer *afp);#pragma mark __________ AudioFileManagertypedef struct S_AudioFileManager{/*public:*/        /* this method should NOT be called by an object of this class           as it is called by the parent's Disconnect() method */    void                (*Disconnect)(struct S_AudioFileManager *afm);    int                 (*DoConnect)(struct S_AudioFileManager *afm);    OSStatus            (*Read)(struct S_AudioFileManager *afm, char *buffer, UInt32 *len);    const char*         (*GetFileBuffer)(struct S_AudioFileManager *afm);    const AudioFilePlayer *(*GetParent)(struct S_AudioFileManager *afm);    void                (*SetPosition)(struct S_AudioFileManager *afm, SInt64 pos);  /* seek/rewind in the file */    int                 (*GetByteCounter)(struct S_AudioFileManager *afm);  /* return actual bytes streamed to audio hardware */    void                (*SetEndOfFile)(struct S_AudioFileManager *afm, SInt64 pos);  /* set the "EOF" (will behave just like it reached eof) */   /*protected:*/    AudioFilePlayer*    mParent;    SInt16              mForkRefNum;    SInt64              mAudioDataOffset;        char*               mFileBuffer;    int                 mByteCounter;    int                mReadFromFirstBuffer;    int                mLockUnsuccessful;    int                mIsEngaged;        int                 mNumTimesAskedSinceFinished;	void*               mTmpBuffer;	UInt32              mBufferSize;	UInt32              mBufferOffset;/*public:*/    UInt32              mChunkSize;    SInt64              mFileLength;    SInt64              mReadFilePosition;    int                 mWriteToFirstBuffer;    int                 mFinishedReadingData;/*protected:*/    OSStatus            (*Render)(struct S_AudioFileManager *afm, AudioBuffer *ioData);    OSStatus            (*GetFileData)(struct S_AudioFileManager *afm, void** inOutData, UInt32 *inOutDataSize);    void                (*AfterRender)(struct S_AudioFileManager *afm);/*public:*/    /*static*/    OSStatus            (*FileInputProc)(void                             *inRefCon,                                         AudioUnitRenderActionFlags      inActionFlags,                                         const AudioTimeStamp            *inTimeStamp,                                         UInt32                          inBusNumber,                                         AudioBuffer                     *ioData);} AudioFileManager;AudioFileManager *new_AudioFileManager (AudioFilePlayer *inParent,                      SInt16          inForkRefNum,                       SInt64          inFileLength,                      UInt32          inChunkSize);    void delete_AudioFileManager(AudioFileManager *afm);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -