#ifndef __INC_POS_PAUDIO_AUDIOLIB_H
#define __INC_POS_PAUDIO_AUDIOLIB_H
/*******************************************************************
 Includes Release 24
 (C) Copyright 1995-1997 proDAD
     All Rights Reserved

 $AUT Holger Burkarth
 $DAT >>AudioLib.h<<   24 Mar 1997    10:23:28 - (C) ProDAD
*******************************************************************/
#ifndef __INC_POS_PEXEC_LIBRARY_H
#include <pExec/Library.h>
#endif
 #ifndef __INC_POS_PAUDIO_AUDIO_H
 #include <pAudio/Audio.h>
 #endif
 #ifndef __INC_POS_DEVICE_AUDIO_H
 #include <pDevice/Audio.h>
 #endif



 struct pOS_AudioLibrary {struct pOS_Library  al_Lib;};



/*----------------------------------
 Rückwärtsgerichtete Struktur.
-----------------------------------*/
struct pOS_StdAudioMFunction
{
  VOID (*SetPlayAttr_func)(_R_LB struct pOS_AudioLibrary*,_R_A0 APTR,_R_A1 struct pOS_AudioIO*);
  UBYTE _d14[8];
  VOID (*FreeMap_func)(_R_LB struct pOS_AudioLibrary*,_R_A0 __ARID__ struct pOS_AudioMap*);
  UBYTE _d13[8];
  __ARID__ struct pOS_AudioMap* (*AllocMapA_func)(_R_LB struct pOS_AudioLibrary*,_R_A0 const struct pOS_TagItem*);
  UBYTE _d12[8];
  VOID (*Reset_func)(_R_LB struct pOS_AudioLibrary*,_R_A0 APTR);
  UBYTE _d11[8];
  VOID (*Flush_func)(_R_LB struct pOS_AudioLibrary*,_R_A0 APTR);
  UBYTE _d10[8];

/** 10 **/
  VOID (*Stop_func)(_R_LB struct pOS_AudioLibrary*,_R_A0 APTR);
  UBYTE _d9[8];
  VOID (*Start_func)(_R_LB struct pOS_AudioLibrary*,_R_A0 APTR);
  UBYTE _d8[8];
  VOID (*AbortPlay_func)(_R_LB struct pOS_AudioLibrary*,_R_A0 APTR,_R_A1 struct pOS_AudioIO*);
  UBYTE _d7[8];
  VOID (*BeginPlay_func)(_R_LB struct pOS_AudioLibrary*,_R_A0 APTR,_R_A1 struct pOS_AudioIO*);
  UBYTE _d6[8];
  VOID (*GetResourceInfo_func)(_R_LB struct pOS_AudioLibrary*,_R_A0 APTR,_R_A1 struct pOS_AudioInfoData*,_R_D0 size_t);
  UBYTE _d5[8];
  APTR (*GetResource_func)(_R_LB struct pOS_AudioLibrary*,_R_D0 ULONG);
  UBYTE _d4[8];

  struct pOS_LibraryFunction Reserved1[8];
  struct pOS_SegmentLst* (*Expunge_func)(_R_LB struct pOS_AudioLibrary*);
  UBYTE _d3[8];
  VOID  (*Close_func)(_R_LB struct pOS_AudioLibrary*);
  UBYTE _d2[8];
  BOOL  (*Open_func)(_R_LB struct pOS_AudioLibrary*);
  UBYTE _d1[8];
}; /* => AudioBase */



struct pOS_StdAudioMFunction* _pOS_GetAudioLibraryFunction(struct pOS_AudioLibrary*);

#define _pOS_GetAudioLibraryFunction(lib) \
 ( (struct pOS_StdAudioMFunction*)((ULONG)(lib) - sizeof(struct pOS_StdAudioMFunction)) )


#endif
