aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorS. Davilla <davilla@4pi.com>2013-07-14 09:06:48 -0400
committerS. Davilla <davilla@4pi.com>2013-07-14 09:06:48 -0400
commit37b8fb75af29c071a47d1557fe7dfff0b0812dc4 (patch)
tree2716aa63ffddcfb4682c72bb35c8ec35da560736
parent647cf55a028ac8934b2001894c31e383ff1de807 (diff)
fixed, add float to float convert with a copy so we do not have to check convertFn for null all over the place
-rw-r--r--xbmc/cores/AudioEngine/Utils/AEConvert.cpp16
-rw-r--r--xbmc/cores/AudioEngine/Utils/AEConvert.h2
2 files changed, 18 insertions, 0 deletions
diff --git a/xbmc/cores/AudioEngine/Utils/AEConvert.cpp b/xbmc/cores/AudioEngine/Utils/AEConvert.cpp
index 0b0b646eb7..0a643a235e 100644
--- a/xbmc/cores/AudioEngine/Utils/AEConvert.cpp
+++ b/xbmc/cores/AudioEngine/Utils/AEConvert.cpp
@@ -95,6 +95,7 @@ CAEConvert::AEConvertToFn CAEConvert::ToFloat(enum AEDataFormat dataFormat)
case AE_FMT_S32LE : return &S32LE_Float;
case AE_FMT_S32BE : return &S32BE_Float;
#endif
+ case AE_FMT_FLOAT : return &Float_Float;
case AE_FMT_DOUBLE: return &DOUBLE_Float;
default:
return NULL;
@@ -125,6 +126,7 @@ CAEConvert::AEConvertFrFn CAEConvert::FrFloat(enum AEDataFormat dataFormat)
case AE_FMT_S32LE : return &Float_S32LE;
case AE_FMT_S32BE : return &Float_S32BE;
#endif
+ case AE_FMT_FLOAT : return &Float_Float;
case AE_FMT_DOUBLE: return &Float_DOUBLE;
default:
return NULL;
@@ -371,6 +373,13 @@ unsigned int CAEConvert::S32BE_Float_Neon(uint8_t *data, const unsigned int samp
return samples;
}
+unsigned int CAEConvert::Float_Float(uint8_t *data, const unsigned int samples, float *dest)
+{
+ memcpy(dest, data, samples*sizeof(float));
+
+ return samples;
+}
+
unsigned int CAEConvert::DOUBLE_Float(uint8_t *data, const unsigned int samples, float *dest)
{
double *src = (double*)data;
@@ -1143,6 +1152,13 @@ unsigned int CAEConvert::Float_S32BE_Neon(float *data, const unsigned int sample
return samples << 2;
}
+unsigned int CAEConvert::Float_Float(float *data, const unsigned int samples, uint8_t *dest)
+{
+ memcpy(dest, data, samples*sizeof(float));
+
+ return samples;
+}
+
unsigned int CAEConvert::Float_DOUBLE(float *data, const unsigned int samples, uint8_t *dest)
{
double *dst = (double*)dest;
diff --git a/xbmc/cores/AudioEngine/Utils/AEConvert.h b/xbmc/cores/AudioEngine/Utils/AEConvert.h
index 46472486aa..c0d7c38ec2 100644
--- a/xbmc/cores/AudioEngine/Utils/AEConvert.h
+++ b/xbmc/cores/AudioEngine/Utils/AEConvert.h
@@ -34,6 +34,7 @@ private:
static unsigned int S24BE3_Float(uint8_t *data, const unsigned int samples, float *dest);
static unsigned int S32LE_Float (uint8_t *data, const unsigned int samples, float *dest);
static unsigned int S32BE_Float (uint8_t *data, const unsigned int samples, float *dest);
+ static unsigned int Float_Float (uint8_t *data, const unsigned int samples, float *dest);
static unsigned int DOUBLE_Float(uint8_t *data, const unsigned int samples, float *dest);
static unsigned int Float_U8 (float *data, const unsigned int samples, uint8_t *dest);
@@ -44,6 +45,7 @@ private:
static unsigned int Float_S24NE3(float *data, const unsigned int samples, uint8_t *dest);
static unsigned int Float_S32LE (float *data, const unsigned int samples, uint8_t *dest);
static unsigned int Float_S32BE (float *data, const unsigned int samples, uint8_t *dest);
+ static unsigned int Float_Float (float *data, const unsigned int samples, uint8_t *dest);
static unsigned int Float_DOUBLE(float *data, const unsigned int samples, uint8_t *dest);
static unsigned int S32LE_Float_Neon (uint8_t *data, const unsigned int samples, float *dest);