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 >
Wrap
C/C++ Source or Header
|
1996-05-27
|
2KB
|
82 lines
/* SP_SampleListSubs.c
- SampleList Management Routines -
(c) 1990-94 by Andreas R. Kleinert
Last changes : 17.07.1994
*/
#include "spobject.h"
/* SampleList-Support-Functions */
struct SPO_SampleList * __saveds __stdargs SPLI_GetSampleList(void);
void __saveds __stdargs SPLI_FreeSampleList(struct SPO_SampleList *SampleList);
ULONG __saveds __stdargs SPLI_AddSample(struct SPO_SampleList *slist, APTR buffer, ULONG size, ULONG bits, ULONG sps, ULONG volume);
struct SPO_SampleList * __saveds __stdargs SPLI_GetSampleList(void)
{
struct SPO_SampleList *SampleList = N;
struct List *samelist = N;
samelist = (struct List *) AllocVec(sizeof(struct SPO_SampleList), MEMF_CLEAR|MEMF_PUBLIC);
if(samelist)
{
SampleList = (APTR) samelist;
SampleList->sl_NumEntries = 0;
samelist->lh_Head = (struct Node *) &(samelist->lh_Tail);
samelist->lh_Tail = N;
samelist->lh_TailPred = (struct Node *) &(samelist->lh_Head);
samelist->lh_Type = NT_UNKNOWN;
}else return(NULL);
return(SampleList);
}
void __saveds __stdargs SPLI_FreeSampleList(struct SPO_SampleList *SampleList)
{
struct SPO_SampleEntry *entry;
if(SampleList)
{
for(entry=(APTR) SampleList->sl_EntryList.lh_Head;(entry)&&(entry!=(APTR) &(SampleList->sl_EntryList.lh_Tail));)
{
Remove((APTR) entry);
FreeVec(entry);
entry = (APTR) SampleList->sl_EntryList.lh_Head;
}
FreeVec(SampleList);
}
}
ULONG __saveds __stdargs SPLI_AddSample(struct SPO_SampleList *slist, APTR buffer, ULONG size, ULONG bits, ULONG sps, ULONG volume)
{
struct SPO_SampleEntry *entry;
entry = (APTR) AllocVec(sizeof(struct SPO_SampleEntry), MEMF_CLEAR|MEMF_PUBLIC);
if(!entry) return(FALSE);
slist->sl_NumEntries++;
entry->se_Version = 2;
entry->se_Type = SE_TYPE_SAMPLE;
entry->se_SampleBuffer = buffer;
entry->se_SampleSize = size;
entry->se_SampleBits = bits;
entry->se_SamplesPerSec = sps;
entry->se_Volume = volume;
AddTail((APTR)slist, (APTR)entry);
return(TRUE);
}