home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga Shareware Floppies / ma58.dms / ma58.adf / superplay-lib_DEV / Programmers / Example_SPObjects / SPO / SP_SampleListSubs.c < prev    next >
C/C++ Source or Header  |  1996-05-27  |  2KB  |  82 lines

  1.  
  2.  /* SP_SampleListSubs.c
  3.     - SampleList Management Routines -
  4.     (c) 1990-94 by Andreas R. Kleinert
  5.     Last changes : 17.07.1994
  6.  */
  7.  
  8. #include "spobject.h"
  9.  
  10.  
  11.  /* SampleList-Support-Functions */
  12.  
  13. struct SPO_SampleList * __saveds __stdargs SPLI_GetSampleList(void);
  14. void                    __saveds __stdargs SPLI_FreeSampleList(struct SPO_SampleList *SampleList);
  15. ULONG                   __saveds __stdargs SPLI_AddSample(struct SPO_SampleList *slist, APTR buffer, ULONG size, ULONG bits, ULONG sps, ULONG volume);
  16.  
  17.  
  18. struct SPO_SampleList * __saveds __stdargs SPLI_GetSampleList(void)
  19. {
  20.  struct SPO_SampleList *SampleList = N;
  21.  struct List           *samelist   = N;
  22.  
  23.  samelist = (struct List *) AllocVec(sizeof(struct SPO_SampleList), MEMF_CLEAR|MEMF_PUBLIC);
  24.  if(samelist)
  25.   {
  26.    SampleList = (APTR) samelist;
  27.  
  28.    SampleList->sl_NumEntries = 0;
  29.  
  30.    samelist->lh_Head     = (struct Node *) &(samelist->lh_Tail);
  31.    samelist->lh_Tail     = N;
  32.    samelist->lh_TailPred = (struct Node *) &(samelist->lh_Head);
  33.    samelist->lh_Type     = NT_UNKNOWN;
  34.   }else return(NULL);
  35.  
  36.  return(SampleList);
  37. }
  38.  
  39. void __saveds __stdargs SPLI_FreeSampleList(struct SPO_SampleList *SampleList)
  40. {
  41.  struct SPO_SampleEntry *entry;
  42.  
  43.  if(SampleList)
  44.   {
  45.    for(entry=(APTR) SampleList->sl_EntryList.lh_Head;(entry)&&(entry!=(APTR) &(SampleList->sl_EntryList.lh_Tail));)
  46.     {
  47.      Remove((APTR) entry);
  48.      FreeVec(entry);
  49.      entry = (APTR) SampleList->sl_EntryList.lh_Head;
  50.     }
  51.  
  52.    FreeVec(SampleList);
  53.   }
  54. }
  55.  
  56. ULONG __saveds __stdargs SPLI_AddSample(struct SPO_SampleList *slist, APTR buffer, ULONG size, ULONG bits, ULONG sps, ULONG volume)
  57. {
  58.  struct SPO_SampleEntry *entry;
  59.  
  60.  entry = (APTR) AllocVec(sizeof(struct SPO_SampleEntry), MEMF_CLEAR|MEMF_PUBLIC);
  61.  if(!entry) return(FALSE);
  62.  
  63.  slist->sl_NumEntries++;
  64.  
  65.  
  66.  entry->se_Version       = 2;
  67.  
  68.  entry->se_Type          = SE_TYPE_SAMPLE;
  69.  
  70.  entry->se_SampleBuffer  = buffer;
  71.  entry->se_SampleSize    = size;
  72.  
  73.  entry->se_SampleBits    = bits;
  74.  entry->se_SamplesPerSec = sps;
  75.  entry->se_Volume        = volume;
  76.  
  77.  
  78.  AddTail((APTR)slist, (APTR)entry);
  79.  
  80.  return(TRUE);
  81. }
  82.