Files
mpd/src/dsd2pcm/dsd2pcm.hpp
Sebastian Gesemann 3fcf463f9e import dsd2pcm_src.zip
[this is the code from dsd2pcm_src.zip, published on a forum by
Sebastian Gesemann.  Upon request, he has given permission to
redistribute and modify his code, without referring to a specific
license. - mk]
2011-10-04 21:34:30 +02:00

42 lines
843 B
C++

#ifndef DSD2PCM_HXX_INCLUDED
#define DSD2PCM_HXX_INCLUDED
#include <algorithm>
#include <stdexcept>
#include "dsd2pcm.h"
/**
* C++ PImpl Wrapper for the dsd2pcm C library
*/
class dxd
{
dsd2pcm_ctx *handle;
public:
dxd() : handle(dsd2pcm_init())
{ if (!handle) throw std::runtime_error("wtf?!"); }
dxd(dxd const& x) : handle(dsd2pcm_clone(x.handle))
{ if (!handle) throw std::runtime_error("wtf?!"); }
~dxd() { dsd2pcm_destroy(handle); }
friend void swap(dxd & a, dxd & b)
{ std::swap(a.handle,b.handle); }
dxd& operator=(dxd x)
{ swap(*this,x); return *this; }
void translate(size_t samples,
const unsigned char *src, ptrdiff_t src_stride,
bool lsbitfirst,
float *dst, ptrdiff_t dst_stride)
{
dsd2pcm_translate(handle,samples,src,src_stride,
lsbitfirst,dst,dst_stride);
}
};
#endif // DSD2PCM_HXX_INCLUDED