added saturation to float conversion
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6801 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -79,10 +79,10 @@ private:
|
|||||||
class float32_sample
|
class float32_sample
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
inline operator uint8() { return (int32)(data * 127.0f) + 128; }
|
inline operator uint8() { int32 v = (int32)(data * 127.0f) + 128; if (v > 255) v = 255; else if (v < 0) v = 0; return v; }
|
||||||
inline operator int8() { return (int8)(data * 127.0f); }
|
inline operator int8() { int32 v = (int32)(data * 127.0f); if (v > 127) v = 127; else if (v < -127) v = -127; return v; }
|
||||||
inline operator int16() { return (int16)(data * 32767.0f); }
|
inline operator int16() { int32 v = (int32)(data * 32767.0f); if (v > 32767) v = 32767; else if (v < -32767) v = -32767; return v; }
|
||||||
inline operator int32() { return (int32)(data * 2147483647.0f); }
|
inline operator int32() { float32 v; if (data < -1.0f) v = -1.0f; else if (data > 1.0f) v = 1.0f; else v = data; return (int32)(v * 2147483647.0f); }
|
||||||
inline operator float() { return data; }
|
inline operator float() { return data; }
|
||||||
private:
|
private:
|
||||||
float32 data;
|
float32 data;
|
||||||
@@ -91,10 +91,10 @@ private:
|
|||||||
class float64_sample
|
class float64_sample
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
inline operator uint8() { return (int32)(data * 127.0) + 128; }
|
inline operator uint8() { int32 v = (int32)(data * 127.0f) + 128; if (v > 255) v = 255; else if (v < 0) v = 0; return v; }
|
||||||
inline operator int8() { return (int8)(data * 127.0); }
|
inline operator int8() { int32 v = (int32)(data * 127.0f); if (v > 127) v = 127; else if (v < -127) v = -127; return v; }
|
||||||
inline operator int16() { return (int16)(data * 32767.0); }
|
inline operator int16() { int32 v = (int32)(data * 32767.0f); if (v > 32767) v = 32767; else if (v < -32767) v = -32767; return v; }
|
||||||
inline operator int32() { return (int32)(data * 2147483647.0); }
|
inline operator int32() { float64 v; if (data < -1.0) v = -1.0; else if (data > 1.0) v = 1.0; else v = data; return (int32)(v * 2147483647.0f); }
|
||||||
inline operator float() { return data; }
|
inline operator float() { return data; }
|
||||||
private:
|
private:
|
||||||
float64 data;
|
float64 data;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
#include "RawDecoderPlugin.h"
|
#include "RawDecoderPlugin.h"
|
||||||
#include "AudioConversion.h"
|
#include "AudioConversion.h"
|
||||||
|
|
||||||
#define TRACE_THIS 1
|
#define TRACE_THIS 0
|
||||||
#if TRACE_THIS
|
#if TRACE_THIS
|
||||||
#define TRACE printf
|
#define TRACE printf
|
||||||
#else
|
#else
|
||||||
|
|||||||
Reference in New Issue
Block a user