45 lines
1.4 KiB
C++
45 lines
1.4 KiB
C++
/* -----------------------------------------------------------------------------
|
|
GSFramework
|
|
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
|
----------------------------------------------------------------------------- */
|
|
|
|
|
|
#include "audio/sample_wav.h"
|
|
#include "log/log.h"
|
|
|
|
using namespace GS;
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
bool SampleWav::GetSampleFormat(SampleFormat &fmt) const
|
|
{
|
|
fmt = format;
|
|
return true;
|
|
}
|
|
//------------------------------------------------------------------------------
|
|
|
|
//------------------------------------------------------------------------------
|
|
Time SampleWav::GetDuration() const
|
|
{ return Time::fromMs(sample_count * 1000 / format.frequency); }
|
|
uint SampleWav::GetPCMDataSize() const
|
|
{ return format.GetPCMDataSize(sample_count); }
|
|
//------------------------------------------------------------------------------
|
|
|
|
//------------------------------------------------------------------------------
|
|
char *SampleWav::AllocAs(uint count, const SampleFormat &fmt)
|
|
{
|
|
format = fmt;
|
|
if (!pcm_data.Allocate(format.GetPCMDataSize(count)))
|
|
__ERR__(__LOG_E__ << "Failed to allocate raw PCM sample buffer.\n", NULL)
|
|
|
|
sample_count = count;
|
|
return pcm_data;
|
|
}
|
|
void SampleWav::Set(Array <char> &pcm, uint count, const SampleFormat &fmt)
|
|
{
|
|
pcm_data = pcm;
|
|
sample_count = count;
|
|
format = fmt;
|
|
}
|
|
//------------------------------------------------------------------------------
|