remove other error codes from public decoding API

pull/14/head
Dimitri Diakopoulos 10 years ago
parent 25e43204d0
commit fe34756ac5

@ -71,7 +71,15 @@ int main()
//auto result = loader.Load(fileData, "test_data/ad_hoc/TestBeat_44_16_mono-ima4-reaper.wav"); //auto result = loader.Load(fileData, "test_data/ad_hoc/TestBeat_44_16_mono-ima4-reaper.wav");
loader.Load(fileData, "test_data/ad_hoc/TestBeat_44_16_stereo-ima4-reaper.wavp"); loader.Load(fileData, "test_data/ad_hoc/TestBeat_44_16_stereo-ima4-reaper.wavp");
} }
catch(const UnsupportedExtensionException & e) catch(const UnsupportedExtensionEx & e)
{
std::cerr << "Caught: " << e.what() << std::endl;
}
catch(const LoadPathNotImplEx & e)
{
std::cerr << "Caught: " << e.what() << std::endl;
}
catch(const LoadBufferNotImplEx & e)
{ {
std::cerr << "Caught: " << e.what() << std::endl; std::cerr << "Caught: " << e.what() << std::endl;
} }

@ -35,26 +35,25 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
namespace nqr namespace nqr
{ {
struct UnsupportedExtensionException : public std::runtime_error struct UnsupportedExtensionEx : public std::runtime_error
{ {
UnsupportedExtensionException() : std::runtime_error("Unsupported file extension") {} UnsupportedExtensionEx() : std::runtime_error("Unsupported file extension") {}
}; };
// Tofix: struct LoadPathNotImplEx : public std::runtime_error
// Individual decoder classes will throw std::exceptions for bad things,
// but NyquistIO implements this enum for high-level error notifications.
enum IOError
{ {
NoError, LoadPathNotImplEx() : std::runtime_error("Loading from path not implemented") {}
LoadPathNotImplemented, };
LoadBufferNotImplemented,
UnknownError struct LoadBufferNotImplEx : public std::runtime_error
{
LoadBufferNotImplEx() : std::runtime_error("Loading from buffer not implemented") {}
}; };
struct BaseDecoder struct BaseDecoder
{ {
virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) = 0; virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) = 0;
virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) = 0; virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) = 0;
virtual std::vector<std::string> GetSupportedFileExtensions() = 0; virtual std::vector<std::string> GetSupportedFileExtensions() = 0;
//@todo implement streaming helper methods here //@todo implement streaming helper methods here
}; };

@ -35,8 +35,8 @@ struct CAFDecoder : public nqr::BaseDecoder
{ {
CAFDecoder() {}; CAFDecoder() {};
virtual ~CAFDecoder() {}; virtual ~CAFDecoder() {};
virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) override; virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) override;
virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) override; virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) override;
virtual std::vector<std::string> GetSupportedFileExtensions() override; virtual std::vector<std::string> GetSupportedFileExtensions() override;
}; };

@ -55,8 +55,8 @@ struct FlacDecoder : public nqr::BaseDecoder
{ {
FlacDecoder() {} FlacDecoder() {}
virtual ~FlacDecoder() {} virtual ~FlacDecoder() {}
virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) override; virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) override;
virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) override; virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) override;
virtual std::vector<std::string> GetSupportedFileExtensions() override; virtual std::vector<std::string> GetSupportedFileExtensions() override;
}; };

@ -35,8 +35,8 @@ struct MusepackDecoder : public nqr::BaseDecoder
{ {
MusepackDecoder() {}; MusepackDecoder() {};
virtual ~MusepackDecoder() {}; virtual ~MusepackDecoder() {};
virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) override; virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) override;
virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) override; virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) override;
virtual std::vector<std::string> GetSupportedFileExtensions() override; virtual std::vector<std::string> GetSupportedFileExtensions() override;
}; };

@ -40,8 +40,8 @@ struct OpusDecoder : public nqr::BaseDecoder
{ {
OpusDecoder() {} OpusDecoder() {}
virtual ~OpusDecoder() {} virtual ~OpusDecoder() {}
virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) override; virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) override;
virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) override; virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) override;
virtual std::vector<std::string> GetSupportedFileExtensions() override; virtual std::vector<std::string> GetSupportedFileExtensions() override;
}; };

@ -35,8 +35,8 @@ struct VorbisDecoder : public nqr::BaseDecoder
{ {
VorbisDecoder() {} VorbisDecoder() {}
virtual ~VorbisDecoder() {} virtual ~VorbisDecoder() {}
virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) override; virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) override;
virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) override; virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) override;
virtual std::vector<std::string> GetSupportedFileExtensions() override; virtual std::vector<std::string> GetSupportedFileExtensions() override;
}; };

@ -172,8 +172,8 @@ struct WavDecoder : public nqr::BaseDecoder
{ {
WavDecoder() {} WavDecoder() {}
virtual ~WavDecoder() {} virtual ~WavDecoder() {}
virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) override; virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) override;
virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) override; virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) override;
virtual std::vector<std::string> GetSupportedFileExtensions() override; virtual std::vector<std::string> GetSupportedFileExtensions() override;
}; };

@ -35,8 +35,8 @@ struct WavPackDecoder : public nqr::BaseDecoder
{ {
WavPackDecoder() {}; WavPackDecoder() {};
virtual ~WavPackDecoder() {}; virtual ~WavPackDecoder() {};
virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) override; virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) override;
virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) override; virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector<uint8_t> & memory) override;
virtual std::vector<std::string> GetSupportedFileExtensions() override; virtual std::vector<std::string> GetSupportedFileExtensions() override;
}; };

@ -65,7 +65,7 @@ void NyquistIO::Load(AudioData * data, const std::string & path)
} }
else else
{ {
throw UnsupportedExtensionException(); throw UnsupportedExtensionEx();
} }
} }
@ -73,7 +73,7 @@ void NyquistIO::Load(AudioData * data, std::string extension, const std::vector<
{ {
if (decoderTable.find(extension) == decoderTable.end()) if (decoderTable.find(extension) == decoderTable.end())
{ {
throw UnsupportedExtensionException(); throw UnsupportedExtensionEx();
} }
if (decoderTable.size()) if (decoderTable.size())

@ -31,14 +31,14 @@ using namespace nqr;
// Public Interface // // Public Interface //
////////////////////// //////////////////////
int CAFDecoder::LoadFromPath(AudioData * data, const std::string & path) void CAFDecoder::LoadFromPath(AudioData * data, const std::string & path)
{ {
return IOError::LoadPathNotImplemented; throw LoadPathNotImplEx();
} }
int CAFDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & memory) void CAFDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & memory)
{ {
return IOError::LoadBufferNotImplemented; throw LoadBufferNotImplEx();
} }
std::vector<std::string> CAFDecoder::GetSupportedFileExtensions() std::vector<std::string> CAFDecoder::GetSupportedFileExtensions()

@ -166,15 +166,14 @@ private:
// Public Interface // // Public Interface //
////////////////////// //////////////////////
int FlacDecoder::LoadFromPath(AudioData * data, const std::string & path) void FlacDecoder::LoadFromPath(AudioData * data, const std::string & path)
{ {
FlacDecoderInternal decoder(data, path); FlacDecoderInternal decoder(data, path);
return IOError::NoError;
} }
int FlacDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & memory) void FlacDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & memory)
{ {
return IOError::LoadBufferNotImplemented; throw LoadBufferNotImplEx();
} }
std::vector<std::string> FlacDecoder::GetSupportedFileExtensions() std::vector<std::string> FlacDecoder::GetSupportedFileExtensions()

@ -178,17 +178,15 @@ private:
// Public Interface // // Public Interface //
////////////////////// //////////////////////
int MusepackDecoder::LoadFromPath(AudioData * data, const std::string & path) void MusepackDecoder::LoadFromPath(AudioData * data, const std::string & path)
{ {
auto fileBuffer = nqr::ReadFile(path); auto fileBuffer = nqr::ReadFile(path);
MusepackInternal decoder(data, fileBuffer.buffer); MusepackInternal decoder(data, fileBuffer.buffer);
return IOError::NoError;
} }
int MusepackDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & memory) void MusepackDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & memory)
{ {
MusepackInternal decoder(data, memory); MusepackInternal decoder(data, memory);
return IOError::NoError;
} }
std::vector<std::string> MusepackDecoder::GetSupportedFileExtensions() std::vector<std::string> MusepackDecoder::GetSupportedFileExtensions()

@ -160,17 +160,15 @@ private:
// Public Interface // // Public Interface //
////////////////////// //////////////////////
int nqr::OpusDecoder::LoadFromPath(AudioData * data, const std::string & path) void nqr::OpusDecoder::LoadFromPath(AudioData * data, const std::string & path)
{ {
auto fileBuffer = nqr::ReadFile(path); auto fileBuffer = nqr::ReadFile(path);
OpusDecoderInternal decoder(data, fileBuffer.buffer); OpusDecoderInternal decoder(data, fileBuffer.buffer);
return IOError::NoError;
} }
int nqr::OpusDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & memory) void nqr::OpusDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & memory)
{ {
OpusDecoderInternal decoder(data, memory); OpusDecoderInternal decoder(data, memory);
return IOError::NoError;
} }
std::vector<std::string> nqr::OpusDecoder::GetSupportedFileExtensions() std::vector<std::string> nqr::OpusDecoder::GetSupportedFileExtensions()

@ -182,15 +182,14 @@ private:
// Public Interface // // Public Interface //
////////////////////// //////////////////////
int VorbisDecoder::LoadFromPath(AudioData * data, const std::string & path) void VorbisDecoder::LoadFromPath(AudioData * data, const std::string & path)
{ {
VorbisDecoderInternal decoder(data, path); VorbisDecoderInternal decoder(data, path);
return IOError::NoError;
} }
int VorbisDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & memory) void VorbisDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & memory)
{ {
return IOError::LoadBufferNotImplemented; throw LoadBufferNotImplEx();
} }
std::vector<std::string> VorbisDecoder::GetSupportedFileExtensions() std::vector<std::string> VorbisDecoder::GetSupportedFileExtensions()

@ -33,13 +33,13 @@ using namespace nqr;
// Public Interface // // Public Interface //
////////////////////// //////////////////////
int WavDecoder::LoadFromPath(AudioData * data, const std::string & path) void WavDecoder::LoadFromPath(AudioData * data, const std::string & path)
{ {
auto fileBuffer = nqr::ReadFile(path); auto fileBuffer = nqr::ReadFile(path);
return LoadFromBuffer(data, fileBuffer.buffer); return LoadFromBuffer(data, fileBuffer.buffer);
} }
int WavDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & memory) void WavDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & memory)
{ {
////////////////////// //////////////////////
// Read RIFF Header // // Read RIFF Header //
@ -218,8 +218,6 @@ int WavDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & me
data->samples.resize(totalSamples); data->samples.resize(totalSamples);
ConvertToFloat32(data->samples.data(), memory.data() + DataChunkInfo.offset, totalSamples, data->sourceFormat); ConvertToFloat32(data->samples.data(), memory.data() + DataChunkInfo.offset, totalSamples, data->sourceFormat);
} }
return IOError::NoError;
} }
std::vector<std::string> WavDecoder::GetSupportedFileExtensions() std::vector<std::string> WavDecoder::GetSupportedFileExtensions()

@ -142,15 +142,14 @@ private:
// Public Interface // // Public Interface //
////////////////////// //////////////////////
int WavPackDecoder::LoadFromPath(AudioData * data, const std::string & path) void WavPackDecoder::LoadFromPath(AudioData * data, const std::string & path)
{ {
WavPackInternal decoder(data, path); WavPackInternal decoder(data, path);
return IOError::NoError;
} }
int WavPackDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & memory) void WavPackDecoder::LoadFromBuffer(AudioData * data, const std::vector<uint8_t> & memory)
{ {
return IOError::LoadBufferNotImplemented; throw LoadBufferNotImplEx();
} }
std::vector<std::string> WavPackDecoder::GetSupportedFileExtensions() std::vector<std::string> WavPackDecoder::GetSupportedFileExtensions()

Loading…
Cancel
Save