www.pudn.com > Tetris.rar > CWaveLoader.cpp
#include "CWaveLoader.h" #include#include #include // Construct and Destruct /// NewL() CWavLoader* CWavLoader::NewL() { CWavLoader* self = NewLC(); CleanupStack::Pop(self); return self; } // NewLC() CWavLoader* CWavLoader::NewLC() { CWavLoader* self = new (ELeave) CWavLoader; CleanupStack::PushL(self); self->ConstructL(); return self; } /// ~ CWavLoader::~CWavLoader() {} /// CWavLoader() CWavLoader::CWavLoader() {} /// ConstructL() void CWavLoader::ConstructL() {} /// LoadL() TSample CWavLoader::LoadL(const TFileName& aFileName) { TFileName name(aFileName); CompleteWithAppPath(name); RFs fs; RFile file; fs.Connect(); CleanupClosePushL(fs); CleanupClosePushL(file); User::LeaveIfError(file.Open(fs, name, EFileStream | EFileRead)); // get the file size TInt size; User::LeaveIfError(file.Size(size)); TUint8* tbuf = new (ELeave) TUint8[size]; TPtr8 ptr( (TUint8*)tbuf, size ); User::LeaveIfError(file.Read(ptr)); CleanupStack::PopAndDestroy( 2 ); // fs, file // convert to 16-bit TInt16* buf = new( ELeave )TInt16[size]; TInt i; for(i = 0; i < size; i++) { TInt v = tbuf[i]; v -= 128; buf[i] = ( TInt16 )( v << 8 ); } delete tbuf; TSample sample; sample.iData = buf; sample.iLength = size; sample.iRepStart = 0; sample.iRepEnd = 0; return sample; }