17#ifndef RESONANCE_AUDIO_UTILS_SAMPLE_TYPE_CONVERSION_H_
18#define RESONANCE_AUDIO_UTILS_SAMPLE_TYPE_CONVERSION_H_
22#include "base/integral_types.h"
23#include "base/logging.h"
28inline void ConvertSampleToFloatFormat(int16 input,
float* output) {
30 static const float kInt16Max =
static_cast<float>(0x7FFF);
31 static const float kInt16ToFloat = 1.0f / kInt16Max;
32 *output = input * kInt16ToFloat;
36inline void ConvertSampleToFloatFormat(
float input,
float* output) {
42inline void ConvertSampleFromFloatFormat(
float input, int16* output) {
46 static const float kInt16Min =
static_cast<float>(-0x7FFF);
47 static const float kInt16Max =
static_cast<float>(0x7FFF);
48 static const float kFloatToInt16 = kInt16Max;
49 const float scaled_value = input * kFloatToInt16;
50 const float clamped_value =
51 std::min(kInt16Max, std::max(kInt16Min, scaled_value));
52 *output =
static_cast<int16
>(clamped_value);
56inline void ConvertSampleFromFloatFormat(
float input,
float* output) {
62void ConvertPlanarSamples(
size_t length,
const int16* input,
66void ConvertPlanarSamples(
size_t length,
const float* input,
70void ConvertPlanarSamples(
size_t length,
const float* input,
74void ConvertPlanarSamples(
size_t length,
const float* input,