Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
68
Src/Plugins/Input/in_wmvdrm/Remaining.h
Normal file
68
Src/Plugins/Input/in_wmvdrm/Remaining.h
Normal file
|
@ -0,0 +1,68 @@
|
|||
#ifndef NULLSOFT_REMAININGH
|
||||
#define NULLSOFT_REMAININGH
|
||||
#include <assert.h>
|
||||
#include <memory.h>
|
||||
/* this class is used to store leftover samples */
|
||||
|
||||
class Remaining
|
||||
{
|
||||
public:
|
||||
Remaining()
|
||||
: store(0), size(0), used(0)
|
||||
{}
|
||||
|
||||
void Allocate(unsigned long _size)
|
||||
{
|
||||
assert(_size);
|
||||
used=0;
|
||||
size=_size;
|
||||
if (store)
|
||||
delete [] store;
|
||||
store = new unsigned char [size];
|
||||
}
|
||||
|
||||
/* Saves the incoming data and updates the pointer positions */
|
||||
template <class storage_t>
|
||||
void UpdatingWrite(storage_t *&data, unsigned long &bytes)
|
||||
{
|
||||
unsigned long bytesToWrite = min(bytes, SizeRemaining());
|
||||
Write(data, bytesToWrite);
|
||||
assert(bytesToWrite);
|
||||
data = (storage_t *)((char *)data + bytesToWrite);
|
||||
bytes -= bytesToWrite;
|
||||
}
|
||||
|
||||
void Write(void *data, unsigned long bytes)
|
||||
{
|
||||
unsigned char *copy = (unsigned char *)store;
|
||||
copy+=used;
|
||||
memcpy(copy, data, bytes);
|
||||
used+=bytes;
|
||||
}
|
||||
|
||||
unsigned long SizeRemaining()
|
||||
{
|
||||
return size-used;
|
||||
}
|
||||
|
||||
bool Empty()
|
||||
{
|
||||
return !used;
|
||||
}
|
||||
bool Full()
|
||||
{
|
||||
return size == used;
|
||||
}
|
||||
void *GetData()
|
||||
{
|
||||
return (void *)store;
|
||||
}
|
||||
|
||||
void Flush()
|
||||
{
|
||||
used=0;
|
||||
}
|
||||
unsigned char *store;
|
||||
long size, used;
|
||||
};
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue