Exemplo n.º 1
0
bool BufferedStreamMgr::getLine(QuickString &line)
{
    line.clear();

    if (_mainBufCurrStartPos >= _mainBufCurrLen) {
        if (!readFileChunk()) {
            _eof = true;
            return false;
        }
    }
    while (1) {
        int searchPos = _mainBufCurrStartPos;
        while (searchPos < _mainBufCurrLen && _mainBuf[searchPos] != '\n') {
            searchPos++;
        }

        line.append((char *)_mainBuf + _mainBufCurrStartPos, searchPos - _mainBufCurrStartPos);
        _mainBufCurrStartPos = searchPos +1;
        if (searchPos == _mainBufCurrLen) { //hit end of buffer, but no newline yet
            if (!readFileChunk()) { //hit eof
                return true;
            }
        } else if (_mainBuf[searchPos] == '\n') {
            return true;
        }
    }
}
Exemplo n.º 2
0
int startSound(tsound *snd)
{int i,ret=0;

	for(i=0;i<NUMMAXSOUNDS;i++)
	{
		if(listSounds[i].buf==0)
		{
			
			listSounds[i].fileName=snd->fileName;
			listSounds[i].statusRepeat=snd->statusRepeat;
			listSounds[i].cache=snd->cache;
			listSounds[i].idxTotal=0;
			if(listSounds[i].cache)
				listSounds[i].size=readFile(snd->fileName, (char **)&listSounds[i].buf);
			else
				listSounds[i].size=readFileChunk(listSounds[i].fileName, (char **)&listSounds[i].buf,listSounds[i].idxTotal,8192);

			listSounds[i].idxTotal=listSounds[i].size;

			listSounds[i].size/=sizeof(sample);
			ret=listSounds[i].size;

			listSounds[i].idx=listSounds[i].size;//HEADERWAVFILE;
			break;
		}
	}

	return ret;

}
Exemplo n.º 3
0
bool BufferedStreamMgr::getLine(QuickString &line)
{
	line.clear();

	if (_mainBufCurrStartPos >= _mainBufCurrLen) {
		if (!readFileChunk()) {
			_eof = true;
			return false;
		}
	}
	bool retVal = true;
	while (1) {
		int searchPos = _mainBufCurrStartPos;
		while (searchPos < _mainBufCurrLen && _mainBuf[searchPos] != '\n') {
			searchPos++;
		}

		line.append((char *)_mainBuf + _mainBufCurrStartPos, searchPos - _mainBufCurrStartPos);

		_mainBufCurrStartPos = searchPos +1;
		if (searchPos == _mainBufCurrLen) { //hit end of buffer, but no newline yet
			if (!readFileChunk()) { //hit eof
				retVal = true;
				break;
			}
		} else if (_mainBuf[searchPos] == '\n') {
			retVal = true;
			break;
		}
	}
	//strip any whitespace characters, such as DOS newline characters or extra tabs,
	//from the end of the line
	int lastPos = line.size();
	while (isspace(line[lastPos-1])) lastPos--;
	line.resize(lastPos);

	return retVal;
}
Exemplo n.º 4
0
int RenderAudio(void)
{int J,i,k,idx,s,p=0;
 sample bufSnd[MAXCACHESOUND];

 int soma=0;

	J  = GetFreeAudio();
	J--;


	if(J)
	{

		for(k=0;k<J;k++) bufSnd[k]=0;
		
		for(i=0;i<NUMMAXSOUNDS;i++)
		{
			if(listSounds[i].buf!=0)
			{
				idx=listSounds[i].idx;

				if(idx+J>listSounds[i].size) s=listSounds[i].size-idx;
				else s=J;

				if(s>MAXCACHESOUND) 
					s=MAXCACHESOUND;

				for(k=0;k<s;k++)
				{
					if(p>0)
					{
						bufSnd[k]+=listSounds[i].buf[idx+k];
						bufSnd[k]/=2;
					}
					else
						bufSnd[k]=listSounds[i].buf[idx+k];

					
					soma+=bufSnd[k];
				}
				listSounds[i].idx+=s;
				p++;


				if(s==0)
				{
					if(listSounds[i].statusRepeat)
					{
			
						if(!listSounds[i].cache)
						{
							listSounds[i].idx=0;
							listSounds[i].size=readFileChunk(listSounds[i].fileName, (char **)&listSounds[i].buf,listSounds[i].idxTotal,8192);
							listSounds[i].idxTotal+=listSounds[i].size;
							if(listSounds[i].size==-1)
							{
								listSounds[i].idx=HEADERWAVFILE;
								listSounds[i].idxTotal=0;
								listSounds[i].size=readFileChunk(listSounds[i].fileName, (char **)&listSounds[i].buf,listSounds[i].idxTotal,8192);
							}
						}
						else
							listSounds[i].idx=HEADERWAVFILE;							

					}
					else
					{
						if(!listSounds[i].cache)
						{
							listSounds[i].idx=0;
							listSounds[i].size=readFileChunk(listSounds[i].fileName, (char **)&listSounds[i].buf,listSounds[i].idxTotal,8192);
							listSounds[i].idxTotal+=listSounds[i].size;
							if(listSounds[i].size==-1)
							{
								if(listSounds[i].buf) myfree(listSounds[i].buf);
								listSounds[i].buf=0;
								listSounds[i].idx=0;
							}
						}
						else
						{
						//	if(listSounds[i].buf) myfree(listSounds[i].buf);
						//	listSounds[i].buf=0;
						//	listSounds[i].idx=0;
						}
					}
				} 

			}
		}
	
		if(J) 
			WriteAudio((sample *)&bufSnd[0],J);
	}


  return(soma);
}