AudioBuffer* AudioManager::load(const std::string& filePath,DataStream* stream){
	AudioBuffer* ret=find(filePath);
	if(ret!=0){
		return ret;
	}
	unsigned char* wavBuffer=0;
	do{
		BasicWAVEHeader header;
		wavBuffer=loadwav(stream->data(),stream->size(),&header);
		if(!wavBuffer){
			DebugLog("Load audio failed:%s",filePath.c_str());
			break;
		}

		ALuint buffer= createBufferFromWave(wavBuffer,header);
		if(!buffer){
			DebugLog("Create Buffer From Wave Failed");
			break;
		}
		ret=new AudioBuffer(buffer,filePath);
		_bufferMap[filePath]=ret;
		DebugLog("load %s success!",filePath.c_str());
	}while(0);
	TC_DELETE_ARRAY(wavBuffer);
	return ret;
}
Beispiel #2
0
void OALWav::loadWithoutStreaming(){
	unsigned  char * data = this->readWAVFull(f->getManager(), &header);

	getFormat();
	createBufferFromWave(data);
	GenSources();
}
Beispiel #3
0
void OALWav ::creatBuffer(int index){
	//int count = Min(BUFFER_SIZE, this->riffCount -curPos);
	//определям размер данных для чтения
	int size = Min(BUFFER_SIZE, header.dataSize -curPos);
	//this->datas[index] = readRiffs(size);
	//читаем чанки
	unsigned  char * data = readRiffs(size);
	if(!data)
		return;

	//создаём буферы
	createBufferFromWave(data,size, index);
	//GenSources(index);
}
Beispiel #4
0
int addBuffer(char* fnameptr) {
	LOG_DEBUG("addBuffer( %s )", fnameptr);
	
	BasicWAVEHeader header;
	
	char* data = readWav(fnameptr,&header);
	if (data){
		//Now We've Got A Wave In Memory, Time To Turn It Into A Usable Buffer
		ALuint buffer = createBufferFromWave(data,header);
		if (buffer){
			return (jint) buffer;
			
		} else LOG_ERROR("Failed to create buffer");
		free(data);
		
	} else LOG_ERROR("Failed to read file");
	
	return ERROR;
}