From: <sv...@op...> - 2024-08-16 08:23:12
|
Author: manx Date: Fri Aug 16 10:22:58 2024 New Revision: 21470 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21470 Log: [Ref] mpt/base/floatingpoint.hpp: Rename float32 to somefloat32 and float64 to somefloat64. We sadly should do this because C++23 added optional fixed-width forced-IEEE distinct floating point types like std::float32_t and std::float64_t which would be way too easy to confuse with our existing types that best-match native hardware floating point types and do not imply strict IEEE types. Modified: trunk/OpenMPT/soundlib/Load_wav.cpp trunk/OpenMPT/soundlib/SampleIO.cpp trunk/OpenMPT/soundlib/SampleNormalize.h trunk/OpenMPT/soundlib/tuningbase.h trunk/OpenMPT/src/mpt/base/floatingpoint.hpp trunk/OpenMPT/src/mpt/endian/floatingpoint.hpp trunk/OpenMPT/src/openmpt/base/Endian.hpp trunk/OpenMPT/src/openmpt/base/Types.hpp trunk/OpenMPT/src/openmpt/soundbase/SampleConvert.hpp trunk/OpenMPT/src/openmpt/soundbase/SampleConvertFixedPoint.hpp trunk/OpenMPT/src/openmpt/soundbase/SampleDecode.hpp trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseSimple.cpp trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseSimple.hpp trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseaudio.cpp trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseaudio.hpp trunk/OpenMPT/test/test.cpp Modified: trunk/OpenMPT/soundlib/Load_wav.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_wav.cpp Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/soundlib/Load_wav.cpp Fri Aug 16 10:22:58 2024 (r21470) @@ -175,9 +175,9 @@ if(wavFile.GetSampleFormat() == WAVFormatChunk::fmtFloat) { if(wavFile.GetBitsPerSample() <= 32) - CopyWavChannel<SC::ConversionChain<SC::Convert<int16, float32>, SC::DecodeFloat32<littleEndian32>>>(sample, sampleChunk, channel, wavFile.GetNumChannels()); + CopyWavChannel<SC::ConversionChain<SC::Convert<int16, somefloat32>, SC::DecodeFloat32<littleEndian32>>>(sample, sampleChunk, channel, wavFile.GetNumChannels()); else - CopyWavChannel<SC::ConversionChain<SC::Convert<int16, float64>, SC::DecodeFloat64<littleEndian64>>>(sample, sampleChunk, channel, wavFile.GetNumChannels()); + CopyWavChannel<SC::ConversionChain<SC::Convert<int16, somefloat64>, SC::DecodeFloat64<littleEndian64>>>(sample, sampleChunk, channel, wavFile.GetNumChannels()); } else { if(wavFile.GetBitsPerSample() <= 8) Modified: trunk/OpenMPT/soundlib/SampleIO.cpp ============================================================================== --- trunk/OpenMPT/soundlib/SampleIO.cpp Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/soundlib/SampleIO.cpp Fri Aug 16 10:22:58 2024 (r21470) @@ -572,10 +572,10 @@ { if(GetEndianness() == littleEndian) { - bytesRead = CopyMonoSample<SC::ConversionChain<SC::Convert<int16, float32>, SC::DecodeFloat32<littleEndian32> > >(sample, sourceBuf, fileSize); + bytesRead = CopyMonoSample<SC::ConversionChain<SC::Convert<int16, somefloat32>, SC::DecodeFloat32<littleEndian32> > >(sample, sourceBuf, fileSize); } else { - bytesRead = CopyMonoSample<SC::ConversionChain<SC::Convert<int16, float32>, SC::DecodeFloat32<bigEndian32> > >(sample, sourceBuf, fileSize); + bytesRead = CopyMonoSample<SC::ConversionChain<SC::Convert<int16, somefloat32>, SC::DecodeFloat32<bigEndian32> > >(sample, sourceBuf, fileSize); } } @@ -585,10 +585,10 @@ { if(GetEndianness() == littleEndian) { - bytesRead = CopyStereoInterleavedSample<SC::ConversionChain<SC::Convert<int16, float32>, SC::DecodeFloat32<littleEndian32> > >(sample, sourceBuf, fileSize); + bytesRead = CopyStereoInterleavedSample<SC::ConversionChain<SC::Convert<int16, somefloat32>, SC::DecodeFloat32<littleEndian32> > >(sample, sourceBuf, fileSize); } else { - bytesRead = CopyStereoInterleavedSample<SC::ConversionChain<SC::Convert<int16, float32>, SC::DecodeFloat32<bigEndian32> > >(sample, sourceBuf, fileSize); + bytesRead = CopyStereoInterleavedSample<SC::ConversionChain<SC::Convert<int16, somefloat32>, SC::DecodeFloat32<bigEndian32> > >(sample, sourceBuf, fileSize); } } @@ -598,10 +598,10 @@ { if(GetEndianness() == littleEndian) { - bytesRead = CopyMonoSample<SC::ConversionChain<SC::Convert<int16, float64>, SC::DecodeFloat64<littleEndian64> > >(sample, sourceBuf, fileSize); + bytesRead = CopyMonoSample<SC::ConversionChain<SC::Convert<int16, somefloat64>, SC::DecodeFloat64<littleEndian64> > >(sample, sourceBuf, fileSize); } else { - bytesRead = CopyMonoSample<SC::ConversionChain<SC::Convert<int16, float64>, SC::DecodeFloat64<bigEndian64> > >(sample, sourceBuf, fileSize); + bytesRead = CopyMonoSample<SC::ConversionChain<SC::Convert<int16, somefloat64>, SC::DecodeFloat64<bigEndian64> > >(sample, sourceBuf, fileSize); } } @@ -611,10 +611,10 @@ { if(GetEndianness() == littleEndian) { - bytesRead = CopyStereoInterleavedSample<SC::ConversionChain<SC::Convert<int16, float64>, SC::DecodeFloat64<littleEndian64> > >(sample, sourceBuf, fileSize); + bytesRead = CopyStereoInterleavedSample<SC::ConversionChain<SC::Convert<int16, somefloat64>, SC::DecodeFloat64<littleEndian64> > >(sample, sourceBuf, fileSize); } else { - bytesRead = CopyStereoInterleavedSample<SC::ConversionChain<SC::Convert<int16, float64>, SC::DecodeFloat64<bigEndian64> > >(sample, sourceBuf, fileSize); + bytesRead = CopyStereoInterleavedSample<SC::ConversionChain<SC::Convert<int16, somefloat64>, SC::DecodeFloat64<bigEndian64> > >(sample, sourceBuf, fileSize); } } @@ -665,13 +665,13 @@ else if(GetBitDepth() == 32 && (GetChannelFormat() == mono || GetChannelFormat() == stereoInterleaved) && GetEncoding() == floatPCMnormalize) { // Normalize to 16-Bit - float32 srcPeak = 1.0f; + somefloat32 srcPeak = 1.0f; if(GetEndianness() == littleEndian) { - bytesRead = CopyAndNormalizeSample<SC::NormalizationChain<SC::Convert<int16, float32>, SC::DecodeFloat32<littleEndian32> > >(sample, sourceBuf, fileSize, &srcPeak); + bytesRead = CopyAndNormalizeSample<SC::NormalizationChain<SC::Convert<int16, somefloat32>, SC::DecodeFloat32<littleEndian32> > >(sample, sourceBuf, fileSize, &srcPeak); } else { - bytesRead = CopyAndNormalizeSample<SC::NormalizationChain<SC::Convert<int16, float32>, SC::DecodeFloat32<bigEndian32> > >(sample, sourceBuf, fileSize, &srcPeak); + bytesRead = CopyAndNormalizeSample<SC::NormalizationChain<SC::Convert<int16, somefloat32>, SC::DecodeFloat32<bigEndian32> > >(sample, sourceBuf, fileSize, &srcPeak); } if(bytesRead && srcPeak != 1.0f) { @@ -686,13 +686,13 @@ else if(GetBitDepth() == 64 && (GetChannelFormat() == mono || GetChannelFormat() == stereoInterleaved) && GetEncoding() == floatPCMnormalize) { // Normalize to 16-Bit - float64 srcPeak = 1.0; + somefloat64 srcPeak = 1.0; if(GetEndianness() == littleEndian) { - bytesRead = CopyAndNormalizeSample<SC::NormalizationChain<SC::Convert<int16, float64>, SC::DecodeFloat64<littleEndian64> > >(sample, sourceBuf, fileSize, &srcPeak); + bytesRead = CopyAndNormalizeSample<SC::NormalizationChain<SC::Convert<int16, somefloat64>, SC::DecodeFloat64<littleEndian64> > >(sample, sourceBuf, fileSize, &srcPeak); } else { - bytesRead = CopyAndNormalizeSample<SC::NormalizationChain<SC::Convert<int16, float64>, SC::DecodeFloat64<bigEndian64> > >(sample, sourceBuf, fileSize, &srcPeak); + bytesRead = CopyAndNormalizeSample<SC::NormalizationChain<SC::Convert<int16, somefloat64>, SC::DecodeFloat64<bigEndian64> > >(sample, sourceBuf, fileSize, &srcPeak); } if(bytesRead && srcPeak != 1.0) { @@ -710,15 +710,15 @@ { bytesRead = CopyMonoSample (sample, sourceBuf, fileSize, - SC::ConversionChain<SC::Convert<int16, float32>, SC::DecodeScaledFloat32<littleEndian32> > - (SC::Convert<int16, float32>(), SC::DecodeScaledFloat32<littleEndian32>(1.0f / static_cast<float>(1<<15))) + SC::ConversionChain<SC::Convert<int16, somefloat32>, SC::DecodeScaledFloat32<littleEndian32> > + (SC::Convert<int16, somefloat32>(), SC::DecodeScaledFloat32<littleEndian32>(1.0f / static_cast<float>(1<<15))) ); } else { bytesRead = CopyMonoSample (sample, sourceBuf, fileSize, - SC::ConversionChain<SC::Convert<int16, float32>, SC::DecodeScaledFloat32<bigEndian32> > - (SC::Convert<int16, float32>(), SC::DecodeScaledFloat32<bigEndian32>(1.0f / static_cast<float>(1<<15))) + SC::ConversionChain<SC::Convert<int16, somefloat32>, SC::DecodeScaledFloat32<bigEndian32> > + (SC::Convert<int16, somefloat32>(), SC::DecodeScaledFloat32<bigEndian32>(1.0f / static_cast<float>(1<<15))) ); } } @@ -731,15 +731,15 @@ { bytesRead = CopyStereoInterleavedSample (sample, sourceBuf, fileSize, - SC::ConversionChain<SC::Convert<int16, float32>, SC::DecodeScaledFloat32<littleEndian32> > - (SC::Convert<int16, float32>(), SC::DecodeScaledFloat32<littleEndian32>(1.0f / static_cast<float>(1<<15))) + SC::ConversionChain<SC::Convert<int16, somefloat32>, SC::DecodeScaledFloat32<littleEndian32> > + (SC::Convert<int16, somefloat32>(), SC::DecodeScaledFloat32<littleEndian32>(1.0f / static_cast<float>(1<<15))) ); } else { bytesRead = CopyStereoInterleavedSample (sample, sourceBuf, fileSize, - SC::ConversionChain<SC::Convert<int16, float32>, SC::DecodeScaledFloat32<bigEndian32> > - (SC::Convert<int16, float32>(), SC::DecodeScaledFloat32<bigEndian32>(1.0f / static_cast<float>(1<<15))) + SC::ConversionChain<SC::Convert<int16, somefloat32>, SC::DecodeScaledFloat32<bigEndian32> > + (SC::Convert<int16, somefloat32>(), SC::DecodeScaledFloat32<bigEndian32>(1.0f / static_cast<float>(1<<15))) ); } } @@ -752,15 +752,15 @@ { bytesRead = CopyMonoSample (sample, sourceBuf, fileSize, - SC::ConversionChain<SC::Convert<int16, float32>, SC::DecodeScaledFloat32<littleEndian32> > - (SC::Convert<int16, float32>(), SC::DecodeScaledFloat32<littleEndian32>(1.0f / static_cast<float>(1<<23))) + SC::ConversionChain<SC::Convert<int16, somefloat32>, SC::DecodeScaledFloat32<littleEndian32> > + (SC::Convert<int16, somefloat32>(), SC::DecodeScaledFloat32<littleEndian32>(1.0f / static_cast<float>(1<<23))) ); } else { bytesRead = CopyMonoSample (sample, sourceBuf, fileSize, - SC::ConversionChain<SC::Convert<int16, float32>, SC::DecodeScaledFloat32<bigEndian32> > - (SC::Convert<int16, float32>(), SC::DecodeScaledFloat32<bigEndian32>(1.0f / static_cast<float>(1<<23))) + SC::ConversionChain<SC::Convert<int16, somefloat32>, SC::DecodeScaledFloat32<bigEndian32> > + (SC::Convert<int16, somefloat32>(), SC::DecodeScaledFloat32<bigEndian32>(1.0f / static_cast<float>(1<<23))) ); } } @@ -773,15 +773,15 @@ { bytesRead = CopyStereoInterleavedSample (sample, sourceBuf, fileSize, - SC::ConversionChain<SC::Convert<int16, float32>, SC::DecodeScaledFloat32<littleEndian32> > - (SC::Convert<int16, float32>(), SC::DecodeScaledFloat32<littleEndian32>(1.0f / static_cast<float>(1<<23))) + SC::ConversionChain<SC::Convert<int16, somefloat32>, SC::DecodeScaledFloat32<littleEndian32> > + (SC::Convert<int16, somefloat32>(), SC::DecodeScaledFloat32<littleEndian32>(1.0f / static_cast<float>(1<<23))) ); } else { bytesRead = CopyStereoInterleavedSample (sample, sourceBuf, fileSize, - SC::ConversionChain<SC::Convert<int16, float32>, SC::DecodeScaledFloat32<bigEndian32> > - (SC::Convert<int16, float32>(), SC::DecodeScaledFloat32<bigEndian32>(1.0f / static_cast<float>(1<<23))) + SC::ConversionChain<SC::Convert<int16, somefloat32>, SC::DecodeScaledFloat32<bigEndian32> > + (SC::Convert<int16, somefloat32>(), SC::DecodeScaledFloat32<bigEndian32>(1.0f / static_cast<float>(1<<23))) ); } } Modified: trunk/OpenMPT/soundlib/SampleNormalize.h ============================================================================== --- trunk/OpenMPT/soundlib/SampleNormalize.h Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/soundlib/SampleNormalize.h Fri Aug 16 10:22:58 2024 (r21470) @@ -64,11 +64,11 @@ }; template <> -struct Normalize<float32> +struct Normalize<somefloat32> { - using input_t = float32; - using output_t = float32; - using peak_t = float32; + using input_t = somefloat32; + using output_t = somefloat32; + using peak_t = somefloat32; float maxVal; float maxValInv; MPT_FORCEINLINE Normalize() @@ -104,11 +104,11 @@ }; template <> -struct Normalize<float64> +struct Normalize<somefloat64> { - using input_t = float64; - using output_t = float64; - using peak_t = float64; + using input_t = somefloat64; + using output_t = somefloat64; + using peak_t = somefloat64; double maxVal; double maxValInv; MPT_FORCEINLINE Normalize() Modified: trunk/OpenMPT/soundlib/tuningbase.h ============================================================================== --- trunk/OpenMPT/soundlib/tuningbase.h Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/soundlib/tuningbase.h Fri Aug 16 10:22:58 2024 (r21470) @@ -32,7 +32,7 @@ using NOTEINDEXTYPE = int16; // Some signed integer-type. using UNOTEINDEXTYPE = uint16; // Unsigned NOTEINDEXTYPE. -using RATIOTYPE = float32; // Some 'real figure' type able to present ratios. If changing RATIOTYPE, serialization methods may need modifications. +using RATIOTYPE = somefloat32; // Some 'real figure' type able to present ratios. If changing RATIOTYPE, serialization methods may need modifications. // Counter of steps between notes. If there is no 'finetune'(finestepcount == 0), // then 'step difference' between notes is the Modified: trunk/OpenMPT/src/mpt/base/floatingpoint.hpp ============================================================================== --- trunk/OpenMPT/src/mpt/base/floatingpoint.hpp Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/src/mpt/base/floatingpoint.hpp Fri Aug 16 10:22:58 2024 (r21470) @@ -45,17 +45,17 @@ // fp quad // n/a -using float32 = std::conditional<sizeof(float) == 4, float, std::conditional<sizeof(double) == 4, double, std::conditional<sizeof(long double) == 4, long double, float>::type>::type>::type; +using somefloat32 = std::conditional<sizeof(float) == 4, float, std::conditional<sizeof(double) == 4, double, std::conditional<sizeof(long double) == 4, long double, float>::type>::type>::type; namespace float_literals { -constexpr float32 operator""_f32(long double lit) noexcept { - return static_cast<float32>(lit); +constexpr somefloat32 operator""_sf32(long double lit) noexcept { + return static_cast<somefloat32>(lit); } } // namespace float_literals -using float64 = std::conditional<sizeof(float) == 8, float, std::conditional<sizeof(double) == 8, double, std::conditional<sizeof(long double) == 8, long double, double>::type>::type>::type; +using somefloat64 = std::conditional<sizeof(float) == 8, float, std::conditional<sizeof(double) == 8, double, std::conditional<sizeof(long double) == 8, long double, double>::type>::type>::type; namespace float_literals { -constexpr float64 operator""_f64(long double lit) noexcept { - return static_cast<float64>(lit); +constexpr somefloat64 operator""_sf64(long double lit) noexcept { + return static_cast<somefloat64>(lit); } } // namespace float_literals @@ -75,7 +75,7 @@ // prefer smaller floats, but try to use IEEE754 floats using nativefloat = - std::conditional<mpt::float_traits<float32>::is_preferred, float32, std::conditional<mpt::float_traits<float64>::is_preferred, float64, std::conditional<std::numeric_limits<float>::is_iec559, float, std::conditional<std::numeric_limits<double>::is_iec559, double, std::conditional<std::numeric_limits<long double>::is_iec559, long double, float>::type>::type>::type>::type>::type; + std::conditional<mpt::float_traits<somefloat32>::is_preferred, somefloat32, std::conditional<mpt::float_traits<somefloat64>::is_preferred, somefloat64, std::conditional<std::numeric_limits<float>::is_iec559, float, std::conditional<std::numeric_limits<double>::is_iec559, double, std::conditional<std::numeric_limits<long double>::is_iec559, long double, float>::type>::type>::type>::type>::type; namespace float_literals { constexpr nativefloat operator""_nf(long double lit) noexcept { return static_cast<nativefloat>(lit); Modified: trunk/OpenMPT/src/mpt/endian/floatingpoint.hpp ============================================================================== --- trunk/OpenMPT/src/mpt/endian/floatingpoint.hpp Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/src/mpt/endian/floatingpoint.hpp Fri Aug 16 10:22:58 2024 (r21470) @@ -27,8 +27,8 @@ // 1.0f --> 0x3f800000u -MPT_FORCEINLINE uint32 EncodeIEEE754binary32(float32 f) { - if constexpr (mpt::float_traits<float32>::is_float32 && mpt::float_traits<float32>::is_ieee754_binary && mpt::float_traits<float32>::is_native_endian) { +MPT_FORCEINLINE uint32 EncodeIEEE754binary32(somefloat32 f) { + if constexpr (mpt::float_traits<somefloat32>::is_float32 && mpt::float_traits<somefloat32>::is_ieee754_binary && mpt::float_traits<somefloat32>::is_native_endian) { return mpt::bit_cast<uint32>(f); } else { int e = 0; @@ -55,8 +55,8 @@ } } -MPT_FORCEINLINE uint64 EncodeIEEE754binary64(float64 f) { - if constexpr (mpt::float_traits<float64>::is_float64 && mpt::float_traits<float64>::is_ieee754_binary && mpt::float_traits<float64>::is_native_endian) { +MPT_FORCEINLINE uint64 EncodeIEEE754binary64(somefloat64 f) { + if constexpr (mpt::float_traits<somefloat64>::is_float64 && mpt::float_traits<somefloat64>::is_ieee754_binary && mpt::float_traits<somefloat64>::is_native_endian) { return mpt::bit_cast<uint64>(f); } else { int e = 0; @@ -84,9 +84,9 @@ } // 0x3f800000u --> 1.0f -MPT_FORCEINLINE float32 DecodeIEEE754binary32(uint32 i) { - if constexpr (mpt::float_traits<float32>::is_float32 && mpt::float_traits<float32>::is_ieee754_binary && mpt::float_traits<float32>::is_native_endian) { - return mpt::bit_cast<float32>(i); +MPT_FORCEINLINE somefloat32 DecodeIEEE754binary32(uint32 i) { + if constexpr (mpt::float_traits<somefloat32>::is_float32 && mpt::float_traits<somefloat32>::is_ieee754_binary && mpt::float_traits<somefloat32>::is_native_endian) { + return mpt::bit_cast<somefloat32>(i); } else { uint32 mant = (i & 0x007fffffu) >> 0; uint32 expo = (i & 0x7f800000u) >> 23; @@ -95,20 +95,20 @@ float m = sign ? -static_cast<float>(mant) : static_cast<float>(mant); int e = static_cast<int>(expo) - 127 + 1 - 24; float f = std::ldexp(m, e); - return static_cast<float32>(f); + return static_cast<somefloat32>(f); } else { mant |= 0x00800000u; float m = sign ? -static_cast<float>(mant) : static_cast<float>(mant); int e = static_cast<int>(expo) - 127 + 1 - 24; float f = std::ldexp(m, e); - return static_cast<float32>(f); + return static_cast<somefloat32>(f); } } } -MPT_FORCEINLINE float64 DecodeIEEE754binary64(uint64 i) { - if constexpr (mpt::float_traits<float64>::is_float64 && mpt::float_traits<float64>::is_ieee754_binary && mpt::float_traits<float64>::is_native_endian) { - return mpt::bit_cast<float64>(i); +MPT_FORCEINLINE somefloat64 DecodeIEEE754binary64(uint64 i) { + if constexpr (mpt::float_traits<somefloat64>::is_float64 && mpt::float_traits<somefloat64>::is_ieee754_binary && mpt::float_traits<somefloat64>::is_native_endian) { + return mpt::bit_cast<somefloat64>(i); } else { uint64 mant = (i & 0x000fffffffffffffull) >> 0; uint64 expo = (i & 0x7ff0000000000000ull) >> 52; @@ -117,13 +117,13 @@ double m = sign ? -static_cast<double>(mant) : static_cast<double>(mant); int e = static_cast<int>(expo) - 1023 + 1 - 53; double f = std::ldexp(m, e); - return static_cast<float64>(f); + return static_cast<somefloat64>(f); } else { mant |= 0x0010000000000000ull; double m = sign ? -static_cast<double>(mant) : static_cast<double>(mant); int e = static_cast<int>(expo) - 1023 + 1 - 53; double f = std::ldexp(m, e); - return static_cast<float64>(f); + return static_cast<somefloat64>(f); } } } @@ -141,10 +141,10 @@ return bytes[i]; } IEEE754binary32Emulated() = default; - MPT_FORCEINLINE explicit IEEE754binary32Emulated(float32 f) { + MPT_FORCEINLINE explicit IEEE754binary32Emulated(somefloat32 f) { SetInt32(EncodeIEEE754binary32(f)); } - MPT_FORCEINLINE IEEE754binary32Emulated & operator=(float32 f) { + MPT_FORCEINLINE IEEE754binary32Emulated & operator=(somefloat32 f) { SetInt32(EncodeIEEE754binary32(f)); return *this; } @@ -157,7 +157,7 @@ bytes[2] = b2; bytes[3] = b3; } - MPT_FORCEINLINE operator float32() const { + MPT_FORCEINLINE operator somefloat32() const { return DecodeIEEE754binary32(GetInt32()); } MPT_FORCEINLINE self_t & SetInt32(uint32 i) { @@ -196,10 +196,10 @@ return bytes[i]; } IEEE754binary64Emulated() = default; - MPT_FORCEINLINE explicit IEEE754binary64Emulated(float64 f) { + MPT_FORCEINLINE explicit IEEE754binary64Emulated(somefloat64 f) { SetInt64(EncodeIEEE754binary64(f)); } - MPT_FORCEINLINE IEEE754binary64Emulated & operator=(float64 f) { + MPT_FORCEINLINE IEEE754binary64Emulated & operator=(somefloat64 f) { SetInt64(EncodeIEEE754binary64(f)); return *this; } @@ -213,7 +213,7 @@ bytes[6] = b6; bytes[7] = b7; } - MPT_FORCEINLINE operator float64() const { + MPT_FORCEINLINE operator somefloat64() const { return DecodeIEEE754binary64(GetInt64()); } MPT_FORCEINLINE self_t & SetInt64(uint64 i) { @@ -280,7 +280,7 @@ template <mpt::endian endian = mpt::endian::native> struct IEEE754binary32Native { public: - float32 value; + somefloat32 value; public: MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { @@ -293,10 +293,10 @@ } } IEEE754binary32Native() = default; - MPT_FORCEINLINE explicit IEEE754binary32Native(float32 f) { + MPT_FORCEINLINE explicit IEEE754binary32Native(somefloat32 f) { value = f; } - MPT_FORCEINLINE IEEE754binary32Native & operator=(float32 f) { + MPT_FORCEINLINE IEEE754binary32Native & operator=(somefloat32 f) { value = f; return *this; } @@ -312,7 +312,7 @@ value = DecodeIEEE754binary32(0u | (static_cast<uint32>(b0) << 24) | (static_cast<uint32>(b1) << 16) | (static_cast<uint32>(b2) << 8) | (static_cast<uint32>(b3) << 0)); } } - MPT_FORCEINLINE operator float32() const { + MPT_FORCEINLINE operator somefloat32() const { return value; } MPT_FORCEINLINE IEEE754binary32Native & SetInt32(uint32 i) { @@ -333,7 +333,7 @@ template <mpt::endian endian = mpt::endian::native> struct IEEE754binary64Native { public: - float64 value; + somefloat64 value; public: MPT_FORCEINLINE std::byte GetByte(std::size_t i) const { @@ -346,10 +346,10 @@ } } IEEE754binary64Native() = default; - MPT_FORCEINLINE explicit IEEE754binary64Native(float64 f) { + MPT_FORCEINLINE explicit IEEE754binary64Native(somefloat64 f) { value = f; } - MPT_FORCEINLINE IEEE754binary64Native & operator=(float64 f) { + MPT_FORCEINLINE IEEE754binary64Native & operator=(somefloat64 f) { value = f; return *this; } @@ -362,7 +362,7 @@ value = DecodeIEEE754binary64(0ull | (static_cast<uint64>(b0) << 56) | (static_cast<uint64>(b1) << 48) | (static_cast<uint64>(b2) << 40) | (static_cast<uint64>(b3) << 32) | (static_cast<uint64>(b4) << 24) | (static_cast<uint64>(b5) << 16) | (static_cast<uint64>(b6) << 8) | (static_cast<uint64>(b7) << 0)); } } - MPT_FORCEINLINE operator float64() const { + MPT_FORCEINLINE operator somefloat64() const { return value; } MPT_FORCEINLINE IEEE754binary64Native & SetInt64(uint64 i) { @@ -412,10 +412,10 @@ using IEEE754binary64BE = IEEE754binary64Native<>; }; -using IEEE754binary32LE = IEEE754binary_types<mpt::float_traits<float32>::is_float32 && mpt::float_traits<float32>::is_ieee754_binary && mpt::float_traits<float32>::is_native_endian, mpt::endian::native>::IEEE754binary32LE; -using IEEE754binary32BE = IEEE754binary_types<mpt::float_traits<float32>::is_float32 && mpt::float_traits<float32>::is_ieee754_binary && mpt::float_traits<float32>::is_native_endian, mpt::endian::native>::IEEE754binary32BE; -using IEEE754binary64LE = IEEE754binary_types<mpt::float_traits<float32>::is_float64 && mpt::float_traits<float32>::is_ieee754_binary && mpt::float_traits<float32>::is_native_endian, mpt::endian::native>::IEEE754binary64LE; -using IEEE754binary64BE = IEEE754binary_types<mpt::float_traits<float32>::is_float64 && mpt::float_traits<float32>::is_ieee754_binary && mpt::float_traits<float32>::is_native_endian, mpt::endian::native>::IEEE754binary64BE; +using IEEE754binary32LE = IEEE754binary_types<mpt::float_traits<somefloat32>::is_float32 && mpt::float_traits<somefloat32>::is_ieee754_binary && mpt::float_traits<somefloat32>::is_native_endian, mpt::endian::native>::IEEE754binary32LE; +using IEEE754binary32BE = IEEE754binary_types<mpt::float_traits<somefloat32>::is_float32 && mpt::float_traits<somefloat32>::is_ieee754_binary && mpt::float_traits<somefloat32>::is_native_endian, mpt::endian::native>::IEEE754binary32BE; +using IEEE754binary64LE = IEEE754binary_types<mpt::float_traits<somefloat32>::is_float64 && mpt::float_traits<somefloat32>::is_ieee754_binary && mpt::float_traits<somefloat32>::is_native_endian, mpt::endian::native>::IEEE754binary64LE; +using IEEE754binary64BE = IEEE754binary_types<mpt::float_traits<somefloat32>::is_float64 && mpt::float_traits<somefloat32>::is_ieee754_binary && mpt::float_traits<somefloat32>::is_native_endian, mpt::endian::native>::IEEE754binary64BE; static_assert(sizeof(IEEE754binary32LE) == 4); static_assert(sizeof(IEEE754binary32BE) == 4); Modified: trunk/OpenMPT/src/openmpt/base/Endian.hpp ============================================================================== --- trunk/OpenMPT/src/openmpt/base/Endian.hpp Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/src/openmpt/base/Endian.hpp Fri Aug 16 10:22:58 2024 (r21470) @@ -39,10 +39,10 @@ -using IEEE754binary32LE = mpt::IEEE754binary_types<mpt::float_traits<float32>::is_float32 && mpt::float_traits<float32>::is_ieee754_binary && mpt::float_traits<float32>::is_native_endian, mpt::endian::native>::IEEE754binary32LE; -using IEEE754binary32BE = mpt::IEEE754binary_types<mpt::float_traits<float32>::is_float32 && mpt::float_traits<float32>::is_ieee754_binary && mpt::float_traits<float32>::is_native_endian, mpt::endian::native>::IEEE754binary32BE; -using IEEE754binary64LE = mpt::IEEE754binary_types<mpt::float_traits<float64>::is_float64 && mpt::float_traits<float64>::is_ieee754_binary && mpt::float_traits<float64>::is_native_endian, mpt::endian::native>::IEEE754binary64LE; -using IEEE754binary64BE = mpt::IEEE754binary_types<mpt::float_traits<float64>::is_float64 && mpt::float_traits<float64>::is_ieee754_binary && mpt::float_traits<float64>::is_native_endian, mpt::endian::native>::IEEE754binary64BE; +using IEEE754binary32LE = mpt::IEEE754binary_types<mpt::float_traits<somefloat32>::is_float32 && mpt::float_traits<somefloat32>::is_ieee754_binary && mpt::float_traits<somefloat32>::is_native_endian, mpt::endian::native>::IEEE754binary32LE; +using IEEE754binary32BE = mpt::IEEE754binary_types<mpt::float_traits<somefloat32>::is_float32 && mpt::float_traits<somefloat32>::is_ieee754_binary && mpt::float_traits<somefloat32>::is_native_endian, mpt::endian::native>::IEEE754binary32BE; +using IEEE754binary64LE = mpt::IEEE754binary_types<mpt::float_traits<somefloat64>::is_float64 && mpt::float_traits<somefloat64>::is_ieee754_binary && mpt::float_traits<somefloat64>::is_native_endian, mpt::endian::native>::IEEE754binary64LE; +using IEEE754binary64BE = mpt::IEEE754binary_types<mpt::float_traits<somefloat64>::is_float64 && mpt::float_traits<somefloat64>::is_ieee754_binary && mpt::float_traits<somefloat64>::is_native_endian, mpt::endian::native>::IEEE754binary64BE; // unaligned Modified: trunk/OpenMPT/src/openmpt/base/Types.hpp ============================================================================== --- trunk/OpenMPT/src/openmpt/base/Types.hpp Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/src/openmpt/base/Types.hpp Fri Aug 16 10:22:58 2024 (r21470) @@ -25,8 +25,8 @@ using uint64 = mpt::uint64; using nativefloat = mpt::nativefloat; -using float32 = mpt::float32; -using float64 = mpt::float64; +using somefloat32 = mpt::somefloat32; +using somefloat64 = mpt::somefloat64; using namespace mpt::float_literals; Modified: trunk/OpenMPT/src/openmpt/soundbase/SampleConvert.hpp ============================================================================== --- trunk/OpenMPT/src/openmpt/soundbase/SampleConvert.hpp Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/src/openmpt/soundbase/SampleConvert.hpp Fri Aug 16 10:22:58 2024 (r21470) @@ -153,9 +153,9 @@ }; template <> -struct Convert<uint8, float32> +struct Convert<uint8, somefloat32> { - using input_t = float32; + using input_t = somefloat32; using output_t = uint8; MPT_FORCEINLINE output_t operator()(input_t val) { @@ -234,9 +234,9 @@ }; template <> -struct Convert<int8, float32> +struct Convert<int8, somefloat32> { - using input_t = float32; + using input_t = somefloat32; using output_t = int8; MPT_FORCEINLINE output_t operator()(input_t val) { @@ -315,9 +315,9 @@ }; template <> -struct Convert<int16, float32> +struct Convert<int16, somefloat32> { - using input_t = float32; + using input_t = somefloat32; using output_t = int16; MPT_FORCEINLINE output_t operator()(input_t val) { @@ -396,9 +396,9 @@ }; template <> -struct Convert<int24, float32> +struct Convert<int24, somefloat32> { - using input_t = float32; + using input_t = somefloat32; using output_t = int24; MPT_FORCEINLINE output_t operator()(input_t val) { @@ -477,9 +477,9 @@ }; template <> -struct Convert<int32, float32> +struct Convert<int32, somefloat32> { - using input_t = float32; + using input_t = somefloat32; using output_t = int32; MPT_FORCEINLINE output_t operator()(input_t val) { @@ -558,9 +558,9 @@ }; template <> -struct Convert<int64, float32> +struct Convert<int64, somefloat32> { - using input_t = float32; + using input_t = somefloat32; using output_t = int64; MPT_FORCEINLINE output_t operator()(input_t val) { @@ -584,68 +584,68 @@ }; template <> -struct Convert<float32, uint8> +struct Convert<somefloat32, uint8> { using input_t = uint8; - using output_t = float32; + using output_t = somefloat32; MPT_FORCEINLINE output_t operator()(input_t val) { - return static_cast<float32>(static_cast<int>(val) - 0x80) * (1.0f / static_cast<float32>(static_cast<uint8>(1) << 7)); + return static_cast<somefloat32>(static_cast<int>(val) - 0x80) * (1.0f / static_cast<somefloat32>(static_cast<uint8>(1) << 7)); } }; template <> -struct Convert<float32, int8> +struct Convert<somefloat32, int8> { using input_t = int8; - using output_t = float32; + using output_t = somefloat32; MPT_FORCEINLINE output_t operator()(input_t val) { - return static_cast<float32>(val) * (1.0f / static_cast<float>(static_cast<uint8>(1) << 7)); + return static_cast<somefloat32>(val) * (1.0f / static_cast<float>(static_cast<uint8>(1) << 7)); } }; template <> -struct Convert<float32, int16> +struct Convert<somefloat32, int16> { using input_t = int16; - using output_t = float32; + using output_t = somefloat32; MPT_FORCEINLINE output_t operator()(input_t val) { - return static_cast<float32>(val) * (1.0f / static_cast<float>(static_cast<uint16>(1) << 15)); + return static_cast<somefloat32>(val) * (1.0f / static_cast<float>(static_cast<uint16>(1) << 15)); } }; template <> -struct Convert<float32, int24> +struct Convert<somefloat32, int24> { using input_t = int24; - using output_t = float32; + using output_t = somefloat32; MPT_FORCEINLINE output_t operator()(input_t val) { - return static_cast<float32>(val) * (1.0f / static_cast<float>(static_cast<uint32>(1) << 23)); + return static_cast<somefloat32>(val) * (1.0f / static_cast<float>(static_cast<uint32>(1) << 23)); } }; template <> -struct Convert<float32, int32> +struct Convert<somefloat32, int32> { using input_t = int32; - using output_t = float32; + using output_t = somefloat32; MPT_FORCEINLINE output_t operator()(input_t val) { - return static_cast<float32>(val) * (1.0f / static_cast<float>(static_cast<uint32>(1) << 31)); + return static_cast<somefloat32>(val) * (1.0f / static_cast<float>(static_cast<uint32>(1) << 31)); } }; template <> -struct Convert<float32, int64> +struct Convert<somefloat32, int64> { using input_t = int64; - using output_t = float32; + using output_t = somefloat32; MPT_FORCEINLINE output_t operator()(input_t val) { - return static_cast<float32>(val) * (1.0f / static_cast<float>(static_cast<uint64>(1) << 63)); + return static_cast<somefloat32>(val) * (1.0f / static_cast<float>(static_cast<uint64>(1) << 63)); } }; Modified: trunk/OpenMPT/src/openmpt/soundbase/SampleConvertFixedPoint.hpp ============================================================================== --- trunk/OpenMPT/src/openmpt/soundbase/SampleConvertFixedPoint.hpp Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/src/openmpt/soundbase/SampleConvertFixedPoint.hpp Fri Aug 16 10:22:58 2024 (r21470) @@ -110,10 +110,10 @@ }; template <int fractionalBits> -struct ConvertFixedPoint<float32, int32, fractionalBits> +struct ConvertFixedPoint<somefloat32, int32, fractionalBits> { using input_t = int32; - using output_t = float32; + using output_t = somefloat32; const float factor; MPT_FORCEINLINE ConvertFixedPoint() : factor(1.0f / static_cast<float>(1 << fractionalBits)) @@ -123,15 +123,15 @@ MPT_FORCEINLINE output_t operator()(input_t val) { static_assert(fractionalBits >= 0 && fractionalBits <= sizeof(input_t) * 8 - 1); - return static_cast<float32>(val) * factor; + return static_cast<somefloat32>(val) * factor; } }; template <int fractionalBits> -struct ConvertFixedPoint<float64, int32, fractionalBits> +struct ConvertFixedPoint<somefloat64, int32, fractionalBits> { using input_t = int32; - using output_t = float64; + using output_t = somefloat64; const double factor; MPT_FORCEINLINE ConvertFixedPoint() : factor(1.0 / static_cast<double>(1 << fractionalBits)) @@ -141,7 +141,7 @@ MPT_FORCEINLINE output_t operator()(input_t val) { static_assert(fractionalBits >= 0 && fractionalBits <= sizeof(input_t) * 8 - 1); - return static_cast<float64>(val) * factor; + return static_cast<somefloat64>(val) * factor; } }; @@ -218,9 +218,9 @@ }; template <int fractionalBits> -struct ConvertToFixedPoint<int32, float32, fractionalBits> +struct ConvertToFixedPoint<int32, somefloat32, fractionalBits> { - using input_t = float32; + using input_t = somefloat32; using output_t = int32; const float factor; MPT_FORCEINLINE ConvertToFixedPoint() @@ -237,9 +237,9 @@ }; template <int fractionalBits> -struct ConvertToFixedPoint<int32, float64, fractionalBits> +struct ConvertToFixedPoint<int32, somefloat64, fractionalBits> { - using input_t = float64; + using input_t = somefloat64; using output_t = int32; const double factor; MPT_FORCEINLINE ConvertToFixedPoint() Modified: trunk/OpenMPT/src/openmpt/soundbase/SampleDecode.hpp ============================================================================== --- trunk/OpenMPT/src/openmpt/soundbase/SampleDecode.hpp Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/src/openmpt/soundbase/SampleDecode.hpp Fri Aug 16 10:22:58 2024 (r21470) @@ -290,11 +290,11 @@ struct DecodeFloat32 { using input_t = std::byte; - using output_t = float32; + using output_t = somefloat32; static constexpr std::size_t input_inc = 4; MPT_FORCEINLINE output_t operator()(const input_t *inBuf) { - float32 val = IEEE754binary32LE(inBuf[loLoByteIndex], inBuf[loHiByteIndex], inBuf[hiLoByteIndex], inBuf[hiHiByteIndex]); + somefloat32 val = IEEE754binary32LE(inBuf[loLoByteIndex], inBuf[loHiByteIndex], inBuf[hiLoByteIndex], inBuf[hiHiByteIndex]); val = mpt::sanitize_nan(val); if(std::isinf(val)) { @@ -314,12 +314,12 @@ struct DecodeScaledFloat32 { using input_t = std::byte; - using output_t = float32; + using output_t = somefloat32; static constexpr std::size_t input_inc = 4; float factor; MPT_FORCEINLINE output_t operator()(const input_t *inBuf) { - float32 val = IEEE754binary32LE(inBuf[loLoByteIndex], inBuf[loHiByteIndex], inBuf[hiLoByteIndex], inBuf[hiHiByteIndex]); + somefloat32 val = IEEE754binary32LE(inBuf[loLoByteIndex], inBuf[loHiByteIndex], inBuf[hiLoByteIndex], inBuf[hiHiByteIndex]); val = mpt::sanitize_nan(val); if(std::isinf(val)) { @@ -344,11 +344,11 @@ struct DecodeFloat64 { using input_t = std::byte; - using output_t = float64; + using output_t = somefloat64; static constexpr std::size_t input_inc = 8; MPT_FORCEINLINE output_t operator()(const input_t *inBuf) { - float64 val = IEEE754binary64LE(inBuf[b0], inBuf[b1], inBuf[b2], inBuf[b3], inBuf[b4], inBuf[b5], inBuf[b6], inBuf[b7]); + somefloat64 val = IEEE754binary64LE(inBuf[b0], inBuf[b1], inBuf[b2], inBuf[b3], inBuf[b4], inBuf[b5], inBuf[b6], inBuf[b7]); val = mpt::sanitize_nan(val); if(std::isinf(val)) { Modified: trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseSimple.cpp ============================================================================== --- trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseSimple.cpp Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseSimple.cpp Fri Aug 16 10:22:58 2024 (r21470) @@ -405,8 +405,8 @@ CallbackLockedAudioReadPrepare(m_OutputBuffer.size() / m_Settings.Channels, latencyFrames); CallbackLockedAudioProcess(m_OutputBuffer.data(), nullptr, m_OutputBuffer.size() / m_Settings.Channels); error = 0; - static_assert(sizeof(float32) == 4); - if(pa_simple_write(m_PA_SimpleOutput, m_OutputBuffer.data(), m_OutputBuffer.size() * sizeof(float32), &error) < 0) + static_assert(sizeof(somefloat32) == 4); + if(pa_simple_write(m_PA_SimpleOutput, m_OutputBuffer.data(), m_OutputBuffer.size() * sizeof(somefloat32), &error) < 0) { SendDeviceMessage(LogError, MPT_UFORMAT_MESSAGE("pa_simple_write failed: {}")(PulseErrorString(error))); needsClose = true; Modified: trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseSimple.hpp ============================================================================== --- trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseSimple.hpp Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseSimple.hpp Fri Aug 16 10:22:58 2024 (r21470) @@ -60,7 +60,7 @@ private: pa_simple *m_PA_SimpleOutput; SoundDevice::BufferAttributes m_EffectiveBufferAttributes; - std::vector<float32> m_OutputBuffer; + std::vector<somefloat32> m_OutputBuffer; std::atomic<uint32> m_StatisticLastLatencyFrames; }; Modified: trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseaudio.cpp ============================================================================== --- trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseaudio.cpp Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseaudio.cpp Fri Aug 16 10:22:58 2024 (r21470) @@ -375,8 +375,8 @@ CallbackLockedAudioReadPrepare(m_OutputBuffer.size() / m_Settings.Channels, latencyFrames); CallbackLockedAudioProcess(m_OutputBuffer.data(), nullptr, m_OutputBuffer.size() / m_Settings.Channels); error = 0; - static_assert(sizeof(float32) == 4); - if(pa_simple_write(m_PA_SimpleOutput, m_OutputBuffer.data(), m_OutputBuffer.size() * sizeof(float32), &error) < 0) + static_assert(sizeof(somefloat32) == 4); + if(pa_simple_write(m_PA_SimpleOutput, m_OutputBuffer.data(), m_OutputBuffer.size() * sizeof(somefloat32), &error) < 0) { SendDeviceMessage(LogError, MPT_UFORMAT_MESSAGE("pa_simple_write failed: {}")(PulseErrorString(error))); needsClose = true; Modified: trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseaudio.hpp ============================================================================== --- trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseaudio.hpp Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseaudio.hpp Fri Aug 16 10:22:58 2024 (r21470) @@ -64,7 +64,7 @@ private: pa_simple *m_PA_SimpleOutput; SoundDevice::BufferAttributes m_EffectiveBufferAttributes; - std::vector<float32> m_OutputBuffer; + std::vector<somefloat32> m_OutputBuffer; std::atomic<uint32> m_StatisticLastLatencyFrames; }; Modified: trunk/OpenMPT/test/test.cpp ============================================================================== --- trunk/OpenMPT/test/test.cpp Fri Aug 16 10:13:30 2024 (r21469) +++ trunk/OpenMPT/test/test.cpp Fri Aug 16 10:22:58 2024 (r21470) @@ -4618,8 +4618,8 @@ sample.nLength = 65536; sample.uFlags.set(CHN_16BIT); sample.pData.pSample = sampleBuf.data(); - CopyAndNormalizeSample<SC::NormalizationChain<SC::Convert<int16, float32>, SC::DecodeFloat32<bigEndian32> > >(sample, source32.data(), 4*65536); - CopySample<SC::ConversionChain<SC::Convert<int16, float32>, SC::DecodeFloat32<bigEndian32> > >(truncated16.data(), 65536, 1, source32.data(), 65536 * 4, 1); + CopyAndNormalizeSample<SC::NormalizationChain<SC::Convert<int16, somefloat32>, SC::DecodeFloat32<bigEndian32> > >(sample, source32.data(), 4*65536); + CopySample<SC::ConversionChain<SC::Convert<int16, somefloat32>, SC::DecodeFloat32<bigEndian32> > >(truncated16.data(), 65536, 1, source32.data(), 65536 * 4, 1); for(std::size_t i = 0; i < 65536; i++) { |