mirror of
https://github.com/claunia/flac.git
synced 2025-12-16 18:54:26 +00:00
Retire FLAC__float and FLAC__double types
Usage of internal aliases for float and double do not provide substantial value. For integer-only libs, the macro FLAC__INTEGER_ONLY_LIBRARY is used in the appropriate places already. Also, adapt copyright messages to include 2016. Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com> Closes: https://github.com/xiph/flac/pull/10
This commit is contained in:
committed by
Erik de Castro Lopo
parent
0435a231c8
commit
e5498e87ea
@@ -1,6 +1,6 @@
|
|||||||
/* libFLAC - Free Lossless Audio Codec library
|
/* libFLAC - Free Lossless Audio Codec library
|
||||||
* Copyright (C) 2000-2009 Josh Coalson
|
* Copyright (C) 2000-2009 Josh Coalson
|
||||||
* Copyright (C) 2011-2014 Xiph.Org Foundation
|
* Copyright (C) 2011-2016 Xiph.Org Foundation
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@@ -214,7 +214,7 @@ static FLAC__fixedpoint local__compute_rbps_wide_integerized(FLAC__uint64 err, F
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
||||||
unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1])
|
unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1])
|
||||||
#else
|
#else
|
||||||
unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 data[], unsigned data_len, FLAC__fixedpoint residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1])
|
unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 data[], unsigned data_len, FLAC__fixedpoint residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1])
|
||||||
#endif
|
#endif
|
||||||
@@ -255,11 +255,11 @@ unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 data[], unsigned d
|
|||||||
FLAC__ASSERT(data_len > 0 || total_error_3 == 0);
|
FLAC__ASSERT(data_len > 0 || total_error_3 == 0);
|
||||||
FLAC__ASSERT(data_len > 0 || total_error_4 == 0);
|
FLAC__ASSERT(data_len > 0 || total_error_4 == 0);
|
||||||
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
||||||
residual_bits_per_sample[0] = (FLAC__float)((total_error_0 > 0) ? log(M_LN2 * (FLAC__double)total_error_0 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[0] = (float)((total_error_0 > 0) ? log(M_LN2 * (double)total_error_0 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[1] = (FLAC__float)((total_error_1 > 0) ? log(M_LN2 * (FLAC__double)total_error_1 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[1] = (float)((total_error_1 > 0) ? log(M_LN2 * (double)total_error_1 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[2] = (FLAC__float)((total_error_2 > 0) ? log(M_LN2 * (FLAC__double)total_error_2 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[2] = (float)((total_error_2 > 0) ? log(M_LN2 * (double)total_error_2 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[3] = (FLAC__float)((total_error_3 > 0) ? log(M_LN2 * (FLAC__double)total_error_3 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[3] = (float)((total_error_3 > 0) ? log(M_LN2 * (double)total_error_3 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[4] = (FLAC__float)((total_error_4 > 0) ? log(M_LN2 * (FLAC__double)total_error_4 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[4] = (float)((total_error_4 > 0) ? log(M_LN2 * (double)total_error_4 / (double)data_len) / M_LN2 : 0.0);
|
||||||
#else
|
#else
|
||||||
residual_bits_per_sample[0] = (total_error_0 > 0) ? local__compute_rbps_integerized(total_error_0, data_len) : 0;
|
residual_bits_per_sample[0] = (total_error_0 > 0) ? local__compute_rbps_integerized(total_error_0, data_len) : 0;
|
||||||
residual_bits_per_sample[1] = (total_error_1 > 0) ? local__compute_rbps_integerized(total_error_1, data_len) : 0;
|
residual_bits_per_sample[1] = (total_error_1 > 0) ? local__compute_rbps_integerized(total_error_1, data_len) : 0;
|
||||||
@@ -272,7 +272,7 @@ unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 data[], unsigned d
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
||||||
unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1])
|
unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1])
|
||||||
#else
|
#else
|
||||||
unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsigned data_len, FLAC__fixedpoint residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1])
|
unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsigned data_len, FLAC__fixedpoint residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1])
|
||||||
#endif
|
#endif
|
||||||
@@ -317,11 +317,11 @@ unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsig
|
|||||||
FLAC__ASSERT(data_len > 0 || total_error_3 == 0);
|
FLAC__ASSERT(data_len > 0 || total_error_3 == 0);
|
||||||
FLAC__ASSERT(data_len > 0 || total_error_4 == 0);
|
FLAC__ASSERT(data_len > 0 || total_error_4 == 0);
|
||||||
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
||||||
residual_bits_per_sample[0] = (FLAC__float)((total_error_0 > 0) ? log(M_LN2 * (FLAC__double)total_error_0 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[0] = (float)((total_error_0 > 0) ? log(M_LN2 * (double)total_error_0 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[1] = (FLAC__float)((total_error_1 > 0) ? log(M_LN2 * (FLAC__double)total_error_1 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[1] = (float)((total_error_1 > 0) ? log(M_LN2 * (double)total_error_1 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[2] = (FLAC__float)((total_error_2 > 0) ? log(M_LN2 * (FLAC__double)total_error_2 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[2] = (float)((total_error_2 > 0) ? log(M_LN2 * (double)total_error_2 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[3] = (FLAC__float)((total_error_3 > 0) ? log(M_LN2 * (FLAC__double)total_error_3 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[3] = (float)((total_error_3 > 0) ? log(M_LN2 * (double)total_error_3 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[4] = (FLAC__float)((total_error_4 > 0) ? log(M_LN2 * (FLAC__double)total_error_4 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[4] = (float)((total_error_4 > 0) ? log(M_LN2 * (double)total_error_4 / (double)data_len) / M_LN2 : 0.0);
|
||||||
#else
|
#else
|
||||||
residual_bits_per_sample[0] = (total_error_0 > 0) ? local__compute_rbps_wide_integerized(total_error_0, data_len) : 0;
|
residual_bits_per_sample[0] = (total_error_0 > 0) ? local__compute_rbps_wide_integerized(total_error_0, data_len) : 0;
|
||||||
residual_bits_per_sample[1] = (total_error_1 > 0) ? local__compute_rbps_wide_integerized(total_error_1, data_len) : 0;
|
residual_bits_per_sample[1] = (total_error_1 > 0) ? local__compute_rbps_wide_integerized(total_error_1, data_len) : 0;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* libFLAC - Free Lossless Audio Codec library
|
/* libFLAC - Free Lossless Audio Codec library
|
||||||
* Copyright (C) 2000-2009 Josh Coalson
|
* Copyright (C) 2000-2009 Josh Coalson
|
||||||
* Copyright (C) 2011-2014 Xiph.Org Foundation
|
* Copyright (C) 2011-2016 Xiph.Org Foundation
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
FLAC__SSE_TARGET("sse2")
|
FLAC__SSE_TARGET("sse2")
|
||||||
unsigned FLAC__fixed_compute_best_predictor_intrin_sse2(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER + 1])
|
unsigned FLAC__fixed_compute_best_predictor_intrin_sse2(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER + 1])
|
||||||
{
|
{
|
||||||
FLAC__uint32 total_error_0, total_error_1, total_error_2, total_error_3, total_error_4;
|
FLAC__uint32 total_error_0, total_error_1, total_error_2, total_error_3, total_error_4;
|
||||||
unsigned i, order;
|
unsigned i, order;
|
||||||
@@ -140,17 +140,17 @@ unsigned FLAC__fixed_compute_best_predictor_intrin_sse2(const FLAC__int32 data[]
|
|||||||
FLAC__ASSERT(data_len > 0 || total_error_3 == 0);
|
FLAC__ASSERT(data_len > 0 || total_error_3 == 0);
|
||||||
FLAC__ASSERT(data_len > 0 || total_error_4 == 0);
|
FLAC__ASSERT(data_len > 0 || total_error_4 == 0);
|
||||||
|
|
||||||
residual_bits_per_sample[0] = (FLAC__float)((total_error_0 > 0) ? log(M_LN2 * (FLAC__double)total_error_0 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[0] = (float)((total_error_0 > 0) ? log(M_LN2 * (double)total_error_0 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[1] = (FLAC__float)((total_error_1 > 0) ? log(M_LN2 * (FLAC__double)total_error_1 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[1] = (float)((total_error_1 > 0) ? log(M_LN2 * (double)total_error_1 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[2] = (FLAC__float)((total_error_2 > 0) ? log(M_LN2 * (FLAC__double)total_error_2 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[2] = (float)((total_error_2 > 0) ? log(M_LN2 * (double)total_error_2 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[3] = (FLAC__float)((total_error_3 > 0) ? log(M_LN2 * (FLAC__double)total_error_3 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[3] = (float)((total_error_3 > 0) ? log(M_LN2 * (double)total_error_3 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[4] = (FLAC__float)((total_error_4 > 0) ? log(M_LN2 * (FLAC__double)total_error_4 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[4] = (float)((total_error_4 > 0) ? log(M_LN2 * (double)total_error_4 / (double)data_len) / M_LN2 : 0.0);
|
||||||
|
|
||||||
return order;
|
return order;
|
||||||
}
|
}
|
||||||
|
|
||||||
FLAC__SSE_TARGET("sse2")
|
FLAC__SSE_TARGET("sse2")
|
||||||
unsigned FLAC__fixed_compute_best_predictor_wide_intrin_sse2(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER + 1])
|
unsigned FLAC__fixed_compute_best_predictor_wide_intrin_sse2(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER + 1])
|
||||||
{
|
{
|
||||||
FLAC__uint64 total_error_0, total_error_1, total_error_2, total_error_3, total_error_4;
|
FLAC__uint64 total_error_0, total_error_1, total_error_2, total_error_3, total_error_4;
|
||||||
unsigned i, order;
|
unsigned i, order;
|
||||||
@@ -238,11 +238,11 @@ unsigned FLAC__fixed_compute_best_predictor_wide_intrin_sse2(const FLAC__int32 d
|
|||||||
FLAC__ASSERT(data_len > 0 || total_error_3 == 0);
|
FLAC__ASSERT(data_len > 0 || total_error_3 == 0);
|
||||||
FLAC__ASSERT(data_len > 0 || total_error_4 == 0);
|
FLAC__ASSERT(data_len > 0 || total_error_4 == 0);
|
||||||
|
|
||||||
residual_bits_per_sample[0] = (FLAC__float)((total_error_0 > 0) ? log(M_LN2 * (FLAC__double)total_error_0 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[0] = (float)((total_error_0 > 0) ? log(M_LN2 * (double)total_error_0 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[1] = (FLAC__float)((total_error_1 > 0) ? log(M_LN2 * (FLAC__double)total_error_1 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[1] = (float)((total_error_1 > 0) ? log(M_LN2 * (double)total_error_1 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[2] = (FLAC__float)((total_error_2 > 0) ? log(M_LN2 * (FLAC__double)total_error_2 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[2] = (float)((total_error_2 > 0) ? log(M_LN2 * (double)total_error_2 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[3] = (FLAC__float)((total_error_3 > 0) ? log(M_LN2 * (FLAC__double)total_error_3 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[3] = (float)((total_error_3 > 0) ? log(M_LN2 * (double)total_error_3 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[4] = (FLAC__float)((total_error_4 > 0) ? log(M_LN2 * (FLAC__double)total_error_4 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[4] = (float)((total_error_4 > 0) ? log(M_LN2 * (double)total_error_4 / (double)data_len) / M_LN2 : 0.0);
|
||||||
|
|
||||||
return order;
|
return order;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* libFLAC - Free Lossless Audio Codec library
|
/* libFLAC - Free Lossless Audio Codec library
|
||||||
* Copyright (C) 2000-2009 Josh Coalson
|
* Copyright (C) 2000-2009 Josh Coalson
|
||||||
* Copyright (C) 2011-2014 Xiph.Org Foundation
|
* Copyright (C) 2011-2016 Xiph.Org Foundation
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
FLAC__SSE_TARGET("ssse3")
|
FLAC__SSE_TARGET("ssse3")
|
||||||
unsigned FLAC__fixed_compute_best_predictor_intrin_ssse3(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER + 1])
|
unsigned FLAC__fixed_compute_best_predictor_intrin_ssse3(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER + 1])
|
||||||
{
|
{
|
||||||
FLAC__uint32 total_error_0, total_error_1, total_error_2, total_error_3, total_error_4;
|
FLAC__uint32 total_error_0, total_error_1, total_error_2, total_error_3, total_error_4;
|
||||||
unsigned i, order;
|
unsigned i, order;
|
||||||
@@ -134,17 +134,17 @@ unsigned FLAC__fixed_compute_best_predictor_intrin_ssse3(const FLAC__int32 data[
|
|||||||
FLAC__ASSERT(data_len > 0 || total_error_3 == 0);
|
FLAC__ASSERT(data_len > 0 || total_error_3 == 0);
|
||||||
FLAC__ASSERT(data_len > 0 || total_error_4 == 0);
|
FLAC__ASSERT(data_len > 0 || total_error_4 == 0);
|
||||||
|
|
||||||
residual_bits_per_sample[0] = (FLAC__float)((total_error_0 > 0) ? log(M_LN2 * (FLAC__double)total_error_0 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[0] = (float)((total_error_0 > 0) ? log(M_LN2 * (double)total_error_0 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[1] = (FLAC__float)((total_error_1 > 0) ? log(M_LN2 * (FLAC__double)total_error_1 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[1] = (float)((total_error_1 > 0) ? log(M_LN2 * (double)total_error_1 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[2] = (FLAC__float)((total_error_2 > 0) ? log(M_LN2 * (FLAC__double)total_error_2 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[2] = (float)((total_error_2 > 0) ? log(M_LN2 * (double)total_error_2 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[3] = (FLAC__float)((total_error_3 > 0) ? log(M_LN2 * (FLAC__double)total_error_3 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[3] = (float)((total_error_3 > 0) ? log(M_LN2 * (double)total_error_3 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[4] = (FLAC__float)((total_error_4 > 0) ? log(M_LN2 * (FLAC__double)total_error_4 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[4] = (float)((total_error_4 > 0) ? log(M_LN2 * (double)total_error_4 / (double)data_len) / M_LN2 : 0.0);
|
||||||
|
|
||||||
return order;
|
return order;
|
||||||
}
|
}
|
||||||
|
|
||||||
FLAC__SSE_TARGET("ssse3")
|
FLAC__SSE_TARGET("ssse3")
|
||||||
unsigned FLAC__fixed_compute_best_predictor_wide_intrin_ssse3(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER + 1])
|
unsigned FLAC__fixed_compute_best_predictor_wide_intrin_ssse3(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER + 1])
|
||||||
{
|
{
|
||||||
FLAC__uint64 total_error_0, total_error_1, total_error_2, total_error_3, total_error_4;
|
FLAC__uint64 total_error_0, total_error_1, total_error_2, total_error_3, total_error_4;
|
||||||
unsigned i, order;
|
unsigned i, order;
|
||||||
@@ -226,11 +226,11 @@ unsigned FLAC__fixed_compute_best_predictor_wide_intrin_ssse3(const FLAC__int32
|
|||||||
FLAC__ASSERT(data_len > 0 || total_error_3 == 0);
|
FLAC__ASSERT(data_len > 0 || total_error_3 == 0);
|
||||||
FLAC__ASSERT(data_len > 0 || total_error_4 == 0);
|
FLAC__ASSERT(data_len > 0 || total_error_4 == 0);
|
||||||
|
|
||||||
residual_bits_per_sample[0] = (FLAC__float)((total_error_0 > 0) ? log(M_LN2 * (FLAC__double)total_error_0 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[0] = (float)((total_error_0 > 0) ? log(M_LN2 * (double)total_error_0 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[1] = (FLAC__float)((total_error_1 > 0) ? log(M_LN2 * (FLAC__double)total_error_1 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[1] = (float)((total_error_1 > 0) ? log(M_LN2 * (double)total_error_1 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[2] = (FLAC__float)((total_error_2 > 0) ? log(M_LN2 * (FLAC__double)total_error_2 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[2] = (float)((total_error_2 > 0) ? log(M_LN2 * (double)total_error_2 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[3] = (FLAC__float)((total_error_3 > 0) ? log(M_LN2 * (FLAC__double)total_error_3 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[3] = (float)((total_error_3 > 0) ? log(M_LN2 * (double)total_error_3 / (double)data_len) / M_LN2 : 0.0);
|
||||||
residual_bits_per_sample[4] = (FLAC__float)((total_error_4 > 0) ? log(M_LN2 * (FLAC__double)total_error_4 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
residual_bits_per_sample[4] = (float)((total_error_4 > 0) ? log(M_LN2 * (double)total_error_4 / (double)data_len) / M_LN2 : 0.0);
|
||||||
|
|
||||||
return order;
|
return order;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
; libFLAC - Free Lossless Audio Codec library
|
; libFLAC - Free Lossless Audio Codec library
|
||||||
; Copyright (C) 2001-2009 Josh Coalson
|
; Copyright (C) 2001-2009 Josh Coalson
|
||||||
; Copyright (C) 2011-2014 Xiph.Org Foundation
|
; Copyright (C) 2011-2016 Xiph.Org Foundation
|
||||||
;
|
;
|
||||||
; Redistribution and use in source and binary forms, with or without
|
; Redistribution and use in source and binary forms, with or without
|
||||||
; modification, are permitted provided that the following conditions
|
; modification, are permitted provided that the following conditions
|
||||||
@@ -41,7 +41,7 @@ cglobal FLAC__fixed_compute_best_predictor_asm_ia32_mmx_cmov
|
|||||||
|
|
||||||
; **********************************************************************
|
; **********************************************************************
|
||||||
;
|
;
|
||||||
; unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 *data, unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1])
|
; unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 *data, unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1])
|
||||||
; {
|
; {
|
||||||
; FLAC__int32 last_error_0 = data[-1];
|
; FLAC__int32 last_error_0 = data[-1];
|
||||||
; FLAC__int32 last_error_1 = data[-1] - data[-2];
|
; FLAC__int32 last_error_1 = data[-1] - data[-2];
|
||||||
@@ -70,11 +70,11 @@ cglobal FLAC__fixed_compute_best_predictor_asm_ia32_mmx_cmov
|
|||||||
; else
|
; else
|
||||||
; order = 4;
|
; order = 4;
|
||||||
;
|
;
|
||||||
; residual_bits_per_sample[0] = (FLAC__float)((data_len > 0 && total_error_0 > 0) ? log(M_LN2 * (FLAC__double)total_error_0 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
; residual_bits_per_sample[0] = (float)((data_len > 0 && total_error_0 > 0) ? log(M_LN2 * (double)total_error_0 / (double)data_len) / M_LN2 : 0.0);
|
||||||
; residual_bits_per_sample[1] = (FLAC__float)((data_len > 0 && total_error_1 > 0) ? log(M_LN2 * (FLAC__double)total_error_1 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
; residual_bits_per_sample[1] = (float)((data_len > 0 && total_error_1 > 0) ? log(M_LN2 * (double)total_error_1 / (double)data_len) / M_LN2 : 0.0);
|
||||||
; residual_bits_per_sample[2] = (FLAC__float)((data_len > 0 && total_error_2 > 0) ? log(M_LN2 * (FLAC__double)total_error_2 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
; residual_bits_per_sample[2] = (float)((data_len > 0 && total_error_2 > 0) ? log(M_LN2 * (double)total_error_2 / (double)data_len) / M_LN2 : 0.0);
|
||||||
; residual_bits_per_sample[3] = (FLAC__float)((data_len > 0 && total_error_3 > 0) ? log(M_LN2 * (FLAC__double)total_error_3 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
; residual_bits_per_sample[3] = (float)((data_len > 0 && total_error_3 > 0) ? log(M_LN2 * (double)total_error_3 / (double)data_len) / M_LN2 : 0.0);
|
||||||
; residual_bits_per_sample[4] = (FLAC__float)((data_len > 0 && total_error_4 > 0) ? log(M_LN2 * (FLAC__double)total_error_4 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
; residual_bits_per_sample[4] = (float)((data_len > 0 && total_error_4 > 0) ? log(M_LN2 * (double)total_error_4 / (double)data_len) / M_LN2 : 0.0);
|
||||||
;
|
;
|
||||||
; return order;
|
; return order;
|
||||||
; }
|
; }
|
||||||
@@ -199,11 +199,11 @@ cident FLAC__fixed_compute_best_predictor_asm_ia32_mmx_cmov
|
|||||||
movd ebx, mm0 ; ebx = total_error_0
|
movd ebx, mm0 ; ebx = total_error_0
|
||||||
emms
|
emms
|
||||||
|
|
||||||
; residual_bits_per_sample[0] = (FLAC__float)((data_len > 0 && total_error_0 > 0) ? log(M_LN2 * (FLAC__double)total_error_0 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
; residual_bits_per_sample[0] = (float)((data_len > 0 && total_error_0 > 0) ? log(M_LN2 * (double)total_error_0 / (double)data_len) / M_LN2 : 0.0);
|
||||||
; residual_bits_per_sample[1] = (FLAC__float)((data_len > 0 && total_error_1 > 0) ? log(M_LN2 * (FLAC__double)total_error_1 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
; residual_bits_per_sample[1] = (float)((data_len > 0 && total_error_1 > 0) ? log(M_LN2 * (double)total_error_1 / (double)data_len) / M_LN2 : 0.0);
|
||||||
; residual_bits_per_sample[2] = (FLAC__float)((data_len > 0 && total_error_2 > 0) ? log(M_LN2 * (FLAC__double)total_error_2 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
; residual_bits_per_sample[2] = (float)((data_len > 0 && total_error_2 > 0) ? log(M_LN2 * (double)total_error_2 / (double)data_len) / M_LN2 : 0.0);
|
||||||
; residual_bits_per_sample[3] = (FLAC__float)((data_len > 0 && total_error_3 > 0) ? log(M_LN2 * (FLAC__double)total_error_3 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
; residual_bits_per_sample[3] = (float)((data_len > 0 && total_error_3 > 0) ? log(M_LN2 * (double)total_error_3 / (double)data_len) / M_LN2 : 0.0);
|
||||||
; residual_bits_per_sample[4] = (FLAC__float)((data_len > 0 && total_error_4 > 0) ? log(M_LN2 * (FLAC__double)total_error_4 / (FLAC__double)data_len) / M_LN2 : 0.0);
|
; residual_bits_per_sample[4] = (float)((data_len > 0 && total_error_4 > 0) ? log(M_LN2 * (double)total_error_4 / (double)data_len) / M_LN2 : 0.0);
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
fild dword [esp + 40] ; ST = data_len (NOTE: assumes data_len is <2gigs)
|
fild dword [esp + 40] ; ST = data_len (NOTE: assumes data_len is <2gigs)
|
||||||
.rbps_0:
|
.rbps_0:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* libFLAC - Free Lossless Audio Codec library
|
/* libFLAC - Free Lossless Audio Codec library
|
||||||
* Copyright (C) 2000-2009 Josh Coalson
|
* Copyright (C) 2000-2009 Josh Coalson
|
||||||
* Copyright (C) 2011-2014 Xiph.Org Foundation
|
* Copyright (C) 2011-2016 Xiph.Org Foundation
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@@ -54,21 +54,21 @@
|
|||||||
* OUT residual_bits_per_sample[0,FLAC__MAX_FIXED_ORDER]
|
* OUT residual_bits_per_sample[0,FLAC__MAX_FIXED_ORDER]
|
||||||
*/
|
*/
|
||||||
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
||||||
unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
||||||
unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
||||||
# ifndef FLAC__NO_ASM
|
# ifndef FLAC__NO_ASM
|
||||||
# if (defined FLAC__CPU_IA32 || defined FLAC__CPU_X86_64) && defined FLAC__HAS_X86INTRIN
|
# if (defined FLAC__CPU_IA32 || defined FLAC__CPU_X86_64) && defined FLAC__HAS_X86INTRIN
|
||||||
# ifdef FLAC__SSE2_SUPPORTED
|
# ifdef FLAC__SSE2_SUPPORTED
|
||||||
unsigned FLAC__fixed_compute_best_predictor_intrin_sse2(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER + 1]);
|
unsigned FLAC__fixed_compute_best_predictor_intrin_sse2(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER + 1]);
|
||||||
unsigned FLAC__fixed_compute_best_predictor_wide_intrin_sse2(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER + 1]);
|
unsigned FLAC__fixed_compute_best_predictor_wide_intrin_sse2(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER + 1]);
|
||||||
# endif
|
# endif
|
||||||
# ifdef FLAC__SSSE3_SUPPORTED
|
# ifdef FLAC__SSSE3_SUPPORTED
|
||||||
unsigned FLAC__fixed_compute_best_predictor_intrin_ssse3(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
unsigned FLAC__fixed_compute_best_predictor_intrin_ssse3(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
||||||
unsigned FLAC__fixed_compute_best_predictor_wide_intrin_ssse3(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER + 1]);
|
unsigned FLAC__fixed_compute_best_predictor_wide_intrin_ssse3(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER + 1]);
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
# if defined FLAC__CPU_IA32 && defined FLAC__HAS_NASM
|
# if defined FLAC__CPU_IA32 && defined FLAC__HAS_NASM
|
||||||
unsigned FLAC__fixed_compute_best_predictor_asm_ia32_mmx_cmov(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
unsigned FLAC__fixed_compute_best_predictor_asm_ia32_mmx_cmov(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* libFLAC - Free Lossless Audio Codec library
|
/* libFLAC - Free Lossless Audio Codec library
|
||||||
* Copyright (C) 2004-2009 Josh Coalson
|
* Copyright (C) 2004-2009 Josh Coalson
|
||||||
* Copyright (C) 2011-2014 Xiph.Org Foundation
|
* Copyright (C) 2011-2016 Xiph.Org Foundation
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@@ -40,18 +40,15 @@
|
|||||||
#include "FLAC/ordinals.h"
|
#include "FLAC/ordinals.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These typedefs make it easier to ensure that integer versions of
|
* All the code in libFLAC that uses float and double
|
||||||
* the library really only contain integer operations. All the code
|
* should be protected by checks of the macro
|
||||||
* in libFLAC should use FLAC__float and FLAC__double in place of
|
|
||||||
* float and double, and be protected by checks of the macro
|
|
||||||
* FLAC__INTEGER_ONLY_LIBRARY.
|
* FLAC__INTEGER_ONLY_LIBRARY.
|
||||||
*
|
*
|
||||||
* FLAC__real is the basic floating point type used in LPC analysis.
|
|
||||||
*/
|
*/
|
||||||
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
||||||
typedef double FLAC__double;
|
|
||||||
typedef float FLAC__float;
|
|
||||||
/*
|
/*
|
||||||
|
* FLAC__real is the basic floating point type used in LPC analysis.
|
||||||
|
*
|
||||||
* WATCHOUT: changing FLAC__real will change the signatures of many
|
* WATCHOUT: changing FLAC__real will change the signatures of many
|
||||||
* functions that have assembly language equivalents and break them.
|
* functions that have assembly language equivalents and break them.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* libFLAC - Free Lossless Audio Codec library
|
/* libFLAC - Free Lossless Audio Codec library
|
||||||
* Copyright (C) 2000-2009 Josh Coalson
|
* Copyright (C) 2000-2009 Josh Coalson
|
||||||
* Copyright (C) 2011-2014 Xiph.Org Foundation
|
* Copyright (C) 2011-2016 Xiph.Org Foundation
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@@ -114,7 +114,7 @@ void FLAC__lpc_compute_autocorrelation_intrin_sse_lag_16_new(const FLAC__real da
|
|||||||
* in lp_coeff[8][0,8], the LP coefficients for order 8 will be
|
* in lp_coeff[8][0,8], the LP coefficients for order 8 will be
|
||||||
* in lp_coeff[7][0,7], etc.
|
* in lp_coeff[7][0,7], etc.
|
||||||
*/
|
*/
|
||||||
void FLAC__lpc_compute_lp_coefficients(const FLAC__real autoc[], unsigned *max_order, FLAC__real lp_coeff[][FLAC__MAX_LPC_ORDER], FLAC__double error[]);
|
void FLAC__lpc_compute_lp_coefficients(const FLAC__real autoc[], unsigned *max_order, FLAC__real lp_coeff[][FLAC__MAX_LPC_ORDER], double error[]);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FLAC__lpc_quantize_coefficients()
|
* FLAC__lpc_quantize_coefficients()
|
||||||
@@ -227,8 +227,8 @@ void FLAC__lpc_restore_signal_wide_intrin_sse41(const FLAC__int32 residual[], un
|
|||||||
* IN total_samples > 0 # of samples in residual signal
|
* IN total_samples > 0 # of samples in residual signal
|
||||||
* RETURN expected bits per sample
|
* RETURN expected bits per sample
|
||||||
*/
|
*/
|
||||||
FLAC__double FLAC__lpc_compute_expected_bits_per_residual_sample(FLAC__double lpc_error, unsigned total_samples);
|
double FLAC__lpc_compute_expected_bits_per_residual_sample(double lpc_error, unsigned total_samples);
|
||||||
FLAC__double FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(FLAC__double lpc_error, FLAC__double error_scale);
|
double FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(double lpc_error, double error_scale);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FLAC__lpc_compute_best_order()
|
* FLAC__lpc_compute_best_order()
|
||||||
@@ -243,7 +243,7 @@ FLAC__double FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scal
|
|||||||
* (includes warmup sample size and quantized LP coefficient)
|
* (includes warmup sample size and quantized LP coefficient)
|
||||||
* RETURN [1,max_order] best order
|
* RETURN [1,max_order] best order
|
||||||
*/
|
*/
|
||||||
unsigned FLAC__lpc_compute_best_order(const FLAC__double lpc_error[], unsigned max_order, unsigned total_samples, unsigned overhead_bits_per_order);
|
unsigned FLAC__lpc_compute_best_order(const double lpc_error[], unsigned max_order, unsigned total_samples, unsigned overhead_bits_per_order);
|
||||||
|
|
||||||
#endif /* !defined FLAC__INTEGER_ONLY_LIBRARY */
|
#endif /* !defined FLAC__INTEGER_ONLY_LIBRARY */
|
||||||
|
|
||||||
|
|||||||
@@ -119,10 +119,10 @@ void FLAC__lpc_compute_autocorrelation(const FLAC__real data[], unsigned data_le
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FLAC__lpc_compute_lp_coefficients(const FLAC__real autoc[], unsigned *max_order, FLAC__real lp_coeff[][FLAC__MAX_LPC_ORDER], FLAC__double error[])
|
void FLAC__lpc_compute_lp_coefficients(const FLAC__real autoc[], unsigned *max_order, FLAC__real lp_coeff[][FLAC__MAX_LPC_ORDER], double error[])
|
||||||
{
|
{
|
||||||
unsigned i, j;
|
unsigned i, j;
|
||||||
FLAC__double r, err, lpc[FLAC__MAX_LPC_ORDER];
|
double r, err, lpc[FLAC__MAX_LPC_ORDER];
|
||||||
|
|
||||||
FLAC__ASSERT(0 != max_order);
|
FLAC__ASSERT(0 != max_order);
|
||||||
FLAC__ASSERT(0 < *max_order);
|
FLAC__ASSERT(0 < *max_order);
|
||||||
@@ -141,7 +141,7 @@ void FLAC__lpc_compute_lp_coefficients(const FLAC__real autoc[], unsigned *max_o
|
|||||||
/* Update LPC coefficients and total error. */
|
/* Update LPC coefficients and total error. */
|
||||||
lpc[i]=r;
|
lpc[i]=r;
|
||||||
for(j = 0; j < (i>>1); j++) {
|
for(j = 0; j < (i>>1); j++) {
|
||||||
FLAC__double tmp = lpc[j];
|
double tmp = lpc[j];
|
||||||
lpc[j] += r * lpc[i-1-j];
|
lpc[j] += r * lpc[i-1-j];
|
||||||
lpc[i-1-j] += r * tmp;
|
lpc[i-1-j] += r * tmp;
|
||||||
}
|
}
|
||||||
@@ -166,7 +166,7 @@ void FLAC__lpc_compute_lp_coefficients(const FLAC__real autoc[], unsigned *max_o
|
|||||||
int FLAC__lpc_quantize_coefficients(const FLAC__real lp_coeff[], unsigned order, unsigned precision, FLAC__int32 qlp_coeff[], int *shift)
|
int FLAC__lpc_quantize_coefficients(const FLAC__real lp_coeff[], unsigned order, unsigned precision, FLAC__int32 qlp_coeff[], int *shift)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
FLAC__double cmax;
|
double cmax;
|
||||||
FLAC__int32 qmax, qmin;
|
FLAC__int32 qmax, qmin;
|
||||||
|
|
||||||
FLAC__ASSERT(precision > 0);
|
FLAC__ASSERT(precision > 0);
|
||||||
@@ -181,7 +181,7 @@ int FLAC__lpc_quantize_coefficients(const FLAC__real lp_coeff[], unsigned order,
|
|||||||
/* calc cmax = max( |lp_coeff[i]| ) */
|
/* calc cmax = max( |lp_coeff[i]| ) */
|
||||||
cmax = 0.0;
|
cmax = 0.0;
|
||||||
for(i = 0; i < order; i++) {
|
for(i = 0; i < order; i++) {
|
||||||
const FLAC__double d = fabs(lp_coeff[i]);
|
const double d = fabs(lp_coeff[i]);
|
||||||
if(d > cmax)
|
if(d > cmax)
|
||||||
cmax = d;
|
cmax = d;
|
||||||
}
|
}
|
||||||
@@ -206,7 +206,7 @@ int FLAC__lpc_quantize_coefficients(const FLAC__real lp_coeff[], unsigned order,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(*shift >= 0) {
|
if(*shift >= 0) {
|
||||||
FLAC__double error = 0.0;
|
double error = 0.0;
|
||||||
FLAC__int32 q;
|
FLAC__int32 q;
|
||||||
for(i = 0; i < order; i++) {
|
for(i = 0; i < order; i++) {
|
||||||
error += lp_coeff[i] * (1 << *shift);
|
error += lp_coeff[i] * (1 << *shift);
|
||||||
@@ -232,7 +232,7 @@ int FLAC__lpc_quantize_coefficients(const FLAC__real lp_coeff[], unsigned order,
|
|||||||
*/
|
*/
|
||||||
else {
|
else {
|
||||||
const int nshift = -(*shift);
|
const int nshift = -(*shift);
|
||||||
FLAC__double error = 0.0;
|
double error = 0.0;
|
||||||
FLAC__int32 q;
|
FLAC__int32 q;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fprintf(stderr,"FLAC__lpc_quantize_coefficients: negative shift=%d order=%u cmax=%f\n", *shift, order, cmax);
|
fprintf(stderr,"FLAC__lpc_quantize_coefficients: negative shift=%d order=%u cmax=%f\n", *shift, order, cmax);
|
||||||
@@ -1302,21 +1302,21 @@ void FLAC__lpc_restore_signal_wide(const FLAC__int32 * flac_restrict residual, u
|
|||||||
|
|
||||||
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
||||||
|
|
||||||
FLAC__double FLAC__lpc_compute_expected_bits_per_residual_sample(FLAC__double lpc_error, unsigned total_samples)
|
double FLAC__lpc_compute_expected_bits_per_residual_sample(double lpc_error, unsigned total_samples)
|
||||||
{
|
{
|
||||||
FLAC__double error_scale;
|
double error_scale;
|
||||||
|
|
||||||
FLAC__ASSERT(total_samples > 0);
|
FLAC__ASSERT(total_samples > 0);
|
||||||
|
|
||||||
error_scale = 0.5 / (FLAC__double)total_samples;
|
error_scale = 0.5 / (double)total_samples;
|
||||||
|
|
||||||
return FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(lpc_error, error_scale);
|
return FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(lpc_error, error_scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
FLAC__double FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(FLAC__double lpc_error, FLAC__double error_scale)
|
double FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(double lpc_error, double error_scale)
|
||||||
{
|
{
|
||||||
if(lpc_error > 0.0) {
|
if(lpc_error > 0.0) {
|
||||||
FLAC__double bps = (FLAC__double)0.5 * log(error_scale * lpc_error) / M_LN2;
|
double bps = (double)0.5 * log(error_scale * lpc_error) / M_LN2;
|
||||||
if(bps >= 0.0)
|
if(bps >= 0.0)
|
||||||
return bps;
|
return bps;
|
||||||
else
|
else
|
||||||
@@ -1330,21 +1330,21 @@ FLAC__double FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scal
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned FLAC__lpc_compute_best_order(const FLAC__double lpc_error[], unsigned max_order, unsigned total_samples, unsigned overhead_bits_per_order)
|
unsigned FLAC__lpc_compute_best_order(const double lpc_error[], unsigned max_order, unsigned total_samples, unsigned overhead_bits_per_order)
|
||||||
{
|
{
|
||||||
unsigned order, indx, best_index; /* 'index' the index into lpc_error; index==order-1 since lpc_error[0] is for order==1, lpc_error[1] is for order==2, etc */
|
unsigned order, indx, best_index; /* 'index' the index into lpc_error; index==order-1 since lpc_error[0] is for order==1, lpc_error[1] is for order==2, etc */
|
||||||
FLAC__double bits, best_bits, error_scale;
|
double bits, best_bits, error_scale;
|
||||||
|
|
||||||
FLAC__ASSERT(max_order > 0);
|
FLAC__ASSERT(max_order > 0);
|
||||||
FLAC__ASSERT(total_samples > 0);
|
FLAC__ASSERT(total_samples > 0);
|
||||||
|
|
||||||
error_scale = 0.5 / (FLAC__double)total_samples;
|
error_scale = 0.5 / (double)total_samples;
|
||||||
|
|
||||||
best_index = 0;
|
best_index = 0;
|
||||||
best_bits = (unsigned)(-1);
|
best_bits = (unsigned)(-1);
|
||||||
|
|
||||||
for(indx = 0, order = 1; indx < max_order; indx++, order++) {
|
for(indx = 0, order = 1; indx < max_order; indx++, order++) {
|
||||||
bits = FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(lpc_error[indx], error_scale) * (FLAC__double)(total_samples - order) + (FLAC__double)(order * overhead_bits_per_order);
|
bits = FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(lpc_error[indx], error_scale) * (double)(total_samples - order) + (double)(order * overhead_bits_per_order);
|
||||||
if(bits < best_bits) {
|
if(bits < best_bits) {
|
||||||
best_index = indx;
|
best_index = indx;
|
||||||
best_bits = bits;
|
best_bits = bits;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* libFLAC - Free Lossless Audio Codec library
|
/* libFLAC - Free Lossless Audio Codec library
|
||||||
* Copyright (C) 2000-2009 Josh Coalson
|
* Copyright (C) 2000-2009 Josh Coalson
|
||||||
* Copyright (C) 2011-2014 Xiph.Org Foundation
|
* Copyright (C) 2011-2016 Xiph.Org Foundation
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@@ -3121,7 +3121,7 @@ FLAC__bool seek_to_absolute_sample_(FLAC__StreamDecoder *decoder, FLAC__uint64 s
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
||||||
pos = (FLAC__int64)lower_bound + (FLAC__int64)((FLAC__double)(target_sample - lower_bound_sample) / (FLAC__double)(upper_bound_sample - lower_bound_sample) * (FLAC__double)(upper_bound - lower_bound)) - approx_bytes_per_frame;
|
pos = (FLAC__int64)lower_bound + (FLAC__int64)((double)(target_sample - lower_bound_sample) / (double)(upper_bound_sample - lower_bound_sample) * (double)(upper_bound - lower_bound)) - approx_bytes_per_frame;
|
||||||
#else
|
#else
|
||||||
/* a little less accurate: */
|
/* a little less accurate: */
|
||||||
if(upper_bound - lower_bound < 0xffffffff)
|
if(upper_bound - lower_bound < 0xffffffff)
|
||||||
@@ -3245,7 +3245,7 @@ FLAC__bool seek_to_absolute_sample_ogg_(FLAC__StreamDecoder *decoder, FLAC__uint
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
||||||
pos = (FLAC__uint64)((FLAC__double)(target_sample - left_sample) / (FLAC__double)(right_sample - left_sample) * (FLAC__double)(right_pos - left_pos));
|
pos = (FLAC__uint64)((double)(target_sample - left_sample) / (double)(right_sample - left_sample) * (double)(right_pos - left_pos));
|
||||||
#else
|
#else
|
||||||
/* a little less accurate: */
|
/* a little less accurate: */
|
||||||
if ((target_sample-left_sample <= 0xffffffff) && (right_pos-left_pos <= 0xffffffff))
|
if ((target_sample-left_sample <= 0xffffffff) && (right_pos-left_pos <= 0xffffffff))
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* libFLAC - Free Lossless Audio Codec library
|
/* libFLAC - Free Lossless Audio Codec library
|
||||||
* Copyright (C) 2000-2009 Josh Coalson
|
* Copyright (C) 2000-2009 Josh Coalson
|
||||||
* Copyright (C) 2011-2014 Xiph.Org Foundation
|
* Copyright (C) 2011-2016 Xiph.Org Foundation
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@@ -353,8 +353,8 @@ typedef struct FLAC__StreamEncoderPrivate {
|
|||||||
FLAC__CPUInfo cpuinfo;
|
FLAC__CPUInfo cpuinfo;
|
||||||
void (*local_precompute_partition_info_sums)(const FLAC__int32 residual[], FLAC__uint64 abs_residual_partition_sums[], unsigned residual_samples, unsigned predictor_order, unsigned min_partition_order, unsigned max_partition_order, unsigned bps);
|
void (*local_precompute_partition_info_sums)(const FLAC__int32 residual[], FLAC__uint64 abs_residual_partition_sums[], unsigned residual_samples, unsigned predictor_order, unsigned min_partition_order, unsigned max_partition_order, unsigned bps);
|
||||||
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
||||||
unsigned (*local_fixed_compute_best_predictor)(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
unsigned (*local_fixed_compute_best_predictor)(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
||||||
unsigned (*local_fixed_compute_best_predictor_wide)(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
unsigned (*local_fixed_compute_best_predictor_wide)(const FLAC__int32 data[], unsigned data_len, float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
||||||
#else
|
#else
|
||||||
unsigned (*local_fixed_compute_best_predictor)(const FLAC__int32 data[], unsigned data_len, FLAC__fixedpoint residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
unsigned (*local_fixed_compute_best_predictor)(const FLAC__int32 data[], unsigned data_len, FLAC__fixedpoint residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
||||||
unsigned (*local_fixed_compute_best_predictor_wide)(const FLAC__int32 data[], unsigned data_len, FLAC__fixedpoint residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
unsigned (*local_fixed_compute_best_predictor_wide)(const FLAC__int32 data[], unsigned data_len, FLAC__fixedpoint residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
|
||||||
@@ -854,7 +854,7 @@ static FLAC__StreamEncoderInitStatus init_stream_internal_(
|
|||||||
encoder->private_->abs_residual_partition_sums_unaligned = encoder->private_->abs_residual_partition_sums = 0;
|
encoder->private_->abs_residual_partition_sums_unaligned = encoder->private_->abs_residual_partition_sums = 0;
|
||||||
encoder->private_->raw_bits_per_partition_unaligned = encoder->private_->raw_bits_per_partition = 0;
|
encoder->private_->raw_bits_per_partition_unaligned = encoder->private_->raw_bits_per_partition = 0;
|
||||||
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
||||||
encoder->private_->loose_mid_side_stereo_frames = (unsigned)((FLAC__double)encoder->protected_->sample_rate * 0.4 / (FLAC__double)encoder->protected_->blocksize + 0.5);
|
encoder->private_->loose_mid_side_stereo_frames = (unsigned)((double)encoder->protected_->sample_rate * 0.4 / (double)encoder->protected_->blocksize + 0.5);
|
||||||
#else
|
#else
|
||||||
/* 26214 is the approximate fixed-point equivalent to 0.4 (0.4 * 2^16) */
|
/* 26214 is the approximate fixed-point equivalent to 0.4 (0.4 * 2^16) */
|
||||||
/* sample rate can be up to 655350 Hz, and thus use 20 bits, so we do the multiply÷ by hand */
|
/* sample rate can be up to 655350 Hz, and thus use 20 bits, so we do the multiply÷ by hand */
|
||||||
@@ -3377,14 +3377,14 @@ FLAC__bool process_subframe_(
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
||||||
FLAC__float fixed_residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1];
|
float fixed_residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1];
|
||||||
#else
|
#else
|
||||||
FLAC__fixedpoint fixed_residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1];
|
FLAC__fixedpoint fixed_residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1];
|
||||||
#endif
|
#endif
|
||||||
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
||||||
FLAC__double lpc_residual_bits_per_sample;
|
double lpc_residual_bits_per_sample;
|
||||||
FLAC__real autoc[FLAC__MAX_LPC_ORDER+1]; /* WATCHOUT: the size is important even though encoder->protected_->max_lpc_order might be less; some asm and x86 intrinsic routines need all the space */
|
FLAC__real autoc[FLAC__MAX_LPC_ORDER+1]; /* WATCHOUT: the size is important even though encoder->protected_->max_lpc_order might be less; some asm and x86 intrinsic routines need all the space */
|
||||||
FLAC__double lpc_error[FLAC__MAX_LPC_ORDER];
|
double lpc_error[FLAC__MAX_LPC_ORDER];
|
||||||
unsigned min_lpc_order, max_lpc_order, lpc_order;
|
unsigned min_lpc_order, max_lpc_order, lpc_order;
|
||||||
unsigned min_qlp_coeff_precision, max_qlp_coeff_precision, qlp_coeff_precision;
|
unsigned min_qlp_coeff_precision, max_qlp_coeff_precision, qlp_coeff_precision;
|
||||||
#endif
|
#endif
|
||||||
@@ -3450,7 +3450,7 @@ FLAC__bool process_subframe_(
|
|||||||
max_fixed_order = frame_header->blocksize - 1;
|
max_fixed_order = frame_header->blocksize - 1;
|
||||||
for(fixed_order = min_fixed_order; fixed_order <= max_fixed_order; fixed_order++) {
|
for(fixed_order = min_fixed_order; fixed_order <= max_fixed_order; fixed_order++) {
|
||||||
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
#ifndef FLAC__INTEGER_ONLY_LIBRARY
|
||||||
if(fixed_residual_bits_per_sample[fixed_order] >= (FLAC__float)subframe_bps)
|
if(fixed_residual_bits_per_sample[fixed_order] >= (float)subframe_bps)
|
||||||
continue; /* don't even try */
|
continue; /* don't even try */
|
||||||
rice_parameter = (fixed_residual_bits_per_sample[fixed_order] > 0.0)? (unsigned)(fixed_residual_bits_per_sample[fixed_order]+0.5) : 0; /* 0.5 is for rounding */
|
rice_parameter = (fixed_residual_bits_per_sample[fixed_order] > 0.0)? (unsigned)(fixed_residual_bits_per_sample[fixed_order]+0.5) : 0; /* 0.5 is for rounding */
|
||||||
#else
|
#else
|
||||||
@@ -3527,7 +3527,7 @@ FLAC__bool process_subframe_(
|
|||||||
max_lpc_order = frame_header->blocksize - 1;
|
max_lpc_order = frame_header->blocksize - 1;
|
||||||
for(lpc_order = min_lpc_order; lpc_order <= max_lpc_order; lpc_order++) {
|
for(lpc_order = min_lpc_order; lpc_order <= max_lpc_order; lpc_order++) {
|
||||||
lpc_residual_bits_per_sample = FLAC__lpc_compute_expected_bits_per_residual_sample(lpc_error[lpc_order-1], frame_header->blocksize-lpc_order);
|
lpc_residual_bits_per_sample = FLAC__lpc_compute_expected_bits_per_residual_sample(lpc_error[lpc_order-1], frame_header->blocksize-lpc_order);
|
||||||
if(lpc_residual_bits_per_sample >= (FLAC__double)subframe_bps)
|
if(lpc_residual_bits_per_sample >= (double)subframe_bps)
|
||||||
continue; /* don't even try */
|
continue; /* don't even try */
|
||||||
rice_parameter = (lpc_residual_bits_per_sample > 0.0)? (unsigned)(lpc_residual_bits_per_sample+0.5) : 0; /* 0.5 is for rounding */
|
rice_parameter = (lpc_residual_bits_per_sample > 0.0)? (unsigned)(lpc_residual_bits_per_sample+0.5) : 0; /* 0.5 is for rounding */
|
||||||
rice_parameter++; /* to account for the signed->unsigned conversion during rice coding */
|
rice_parameter++; /* to account for the signed->unsigned conversion during rice coding */
|
||||||
|
|||||||
Reference in New Issue
Block a user