#include "Mem.h"
#include "GlobHdr.h"
#include "TimLib:Seq.h"
#include "TimLib:SeqHdr.h"

#include <string.h>

const _kernel_oserror* CSeq_Init(GlobHdr* g)
{
	const _kernel_oserror* e;
	SeqHdr* s;

	e = CMem_Alloc(g, (void**) &g->seqdataptr, sizeof(*g->seqdataptr));
	if (e) return e;
	s = g->seqdataptr;
	memset(s, 0, sizeof(*s));
	e = CMem_Alloc(g, (void**) &s->pVoicesBuffer, seq_max_streams * seq_soft_buf_len);
	if (e) return e;
	e = CMem_Alloc(g, (void**) &s->pBuffer32, seq_hard_buf_len*8);
	if (e) return e;
	e = CMem_Alloc(g, (void**) &s->pBuffer32_Equ, seq_hard_buf_len*8);
	if (e) return e;

	return CSeq_Init2(g);
}

const _kernel_oserror* CSeq_Finalize(GlobHdr* g)
{
	SeqHdr* s = g->seqdataptr;

	if (s)
	{
		CMem_Free(g, s->pVoicesBuffer);
		CMem_Free(g, s->pBuffer32);
		CMem_Free(g, s->pBuffer32_Equ);
		CMem_Free(g, s);
		g->seqdataptr = NULL;
	}

	return NULL;
}
