//-------------------------------------------------------------------------
bool ReadChunkData(const IwRIFFChunkHeader& header, MemoryFile &memfp, std::vector<short>&data, int samplebits)
{
	size_t len = data.size();

	if(samplebits == 16)
	{
		data.resize(len+header.length/2);
		if(memfp.Read(&data[len], header.length) != header.length)
		{
			return false;
		}
	}
	else
	{
		std::vector<char>bit8data(header.length);
		if(memfp.Read(&bit8data[0], header.length) != header.length)
		{
			return false;
		}

		data.resize(len+header.length);
		for(int i=0; i<header.length; i++)
		{
			data[len+i] = bit8data[i]*256;
		}
	}
	return true;
}
bool ReadChunkFormat(const IwRIFFChunkHeader& header, MemoryFile &memfp, int &herz, int &samplebits, int &channels)
{
	IwWAVEFormatChunkADPCM format;

	// Read data from file
	if ((header.length < sizeof(IwWAVEFormatChunk))	|| (memfp.Read(&format, sizeof(IwWAVEFormatChunkADPCM)) != sizeof(IwWAVEFormatChunkADPCM)))
	{
		assert(0);
		return false;
	}

	assert(format.channels==1 && format.bitsPerSample==16 && format.samplesPerSec==22050);
	if((format.channels!=1&&format.channels!=2) || format.formatTag!=WAVE_FORMAT_PCM)
	{
		return false;
	}

	if(format.bitsPerSample != 16 && format.bitsPerSample!=8)
	{
		return false;
	}

	samplebits = format.bitsPerSample;
	herz = format.samplesPerSec;
	channels = format.channels;
	return true;
}
//-------------------------------------------------------------------------
bool ReadChunkFact(const IwRIFFChunkHeader& header, MemoryFile &memfp, int &sampleCount)
{
	if (memfp.Read(&sampleCount, sizeof(int)) != sizeof(int))
	{
		return false;
	}

	return true;
}