caudio/Source/cRawDecoder.cpp

72 lines
1.6 KiB
C++

// Copyright (c) 2008-2010 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones
// This file is part of the "cAudio Engine"
// For conditions of distribution and use, see copyright notice in cAudio.h
#include "../Headers/cRawDecoder.h"
namespace cAudio{
cRawDecoder::cRawDecoder(IDataSource* stream, unsigned int frequency, AudioFormats format) : IAudioDecoder(stream), Frequency(frequency), Format(format)
{
}
cRawDecoder::~cRawDecoder()
{
}
//!Returns wav channel format
AudioFormats cRawDecoder::getFormat()
{
return Format;
}
//!Returns wav data frequency
int cRawDecoder::getFrequency()
{
return Frequency;
}
//!Returns if seeking is supported
bool cRawDecoder::isSeekingSupported()
{
return true;
}
bool cRawDecoder::isValid()
{
return true;
}
//!Reads wav data
int cRawDecoder::readAudioData(void* output, int amount)
{
return Stream->read(output,amount);
}
//!Sets data reader position
bool cRawDecoder::setPosition(int position, bool relative)
{
Stream->seek(position,relative);
return true;
}
//!Seeks wav data
bool cRawDecoder::seek(float seconds,bool relative)
{
int SampleSize = 1;
if(Format == EAF_8BIT_MONO)
SampleSize = 1;
else if(Format == EAF_8BIT_STEREO)
SampleSize = 2;
else if(Format == EAF_16BIT_MONO)
SampleSize = 2;
else
SampleSize = 4;
int amountToSeek = seconds * (float)Frequency * (float)SampleSize;
return setPosition(amountToSeek, relative);
}
}