/*
|
* frames.c
|
*
|
* Created on: 2021Äê11ÔÂ2ÈÕ
|
* Author: graydon
|
*/
|
#include <iostream>
|
#include <SRU.h>
|
#include <cassert>
|
#include "frames.h"
|
#include "config.h"
|
#include "../drv/memory.h"
|
|
//20230724: ÄÚ´æÐ޸ijÉÁ¬ÐøÄÚ´æ. graydon .
|
|
Frames::Frames()
|
{
|
}
|
Frames::~Frames() {
|
for (std::vector<Frame*>::iterator iter = dataFrame.begin();
|
iter != dataFrame.end();iter++)
|
{
|
delete[] (*iter)->Data();
|
delete *iter;
|
}
|
dataFrame.clear();
|
}
|
|
Frames::Frames(int num)
|
{
|
Frame* frameList = (Frame*)sram_malloc(SRAM_AUTO,mem_any, num*sizeof(Frame));
|
for (int i = 0; i < num; i++) {
|
Frame* pcm = &frameList[i];
|
ufloat* dataPtr = (ufloat*)sram_malloc(SRAM_AUTO,mem_any ,SAMPLE_NUM*sizeof(float));
|
|
assert(dataPtr != NULL);
|
pcm->SetBuffer(dataPtr, SAMPLE_NUM);
|
pcm->Clear();
|
dataFrame.push_back(pcm);
|
}
|
}
|
|
Frame* Frames::GetFrame(int channel )
|
{
|
if (channel >= dataFrame.size()) {
|
std::cout<<"GetChannelPcmPtr channel over range.\n";
|
return NULL;
|
}
|
|
return dataFrame[channel];
|
}
|
|
Frame* Frames::AllocFrame()
|
{
|
Frame* pcm = new Frame(SAMPLE_NUM);
|
|
if (pcm == NULL) {
|
std::cout << "alloc frame fail.\n";
|
return NULL;
|
}
|
pcm->Clear();
|
dataFrame.push_back(pcm);
|
return pcm;
|
}
|