Skip to content

Commit a7431b1

Browse files
committed
Fix problems with int64_t values on Windows
1 parent 96479ac commit a7431b1

File tree

2 files changed

+6
-13
lines changed

2 files changed

+6
-13
lines changed

AudioFile.h

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1394,16 +1394,9 @@ T AudioSampleConverter<T>::thirtyTwoBitIntToSample (int32_t sample)
13941394
else if (std::numeric_limits<T>::is_integer)
13951395
{
13961396
if constexpr (std::is_signed_v<T>)
1397-
{
1398-
if (sample < 0)
1399-
return static_cast<uint32_t> (sample) | static_cast<int64_t>(0xFFFFFFFF) << 32;
1400-
else
1401-
return static_cast<T> (sample);
1402-
}
1397+
return static_cast<T> (sample);
14031398
else
1404-
{
14051399
return static_cast<T> (clamp (static_cast<T> (sample + 2147483648), 0, 4294967295));
1406-
}
14071400
}
14081401
}
14091402

@@ -1433,7 +1426,7 @@ int32_t AudioSampleConverter<T>::sampleToThirtyTwoBitInt (T sample)
14331426
else
14341427
{
14351428
if constexpr (std::is_signed_v<T>)
1436-
return static_cast<int32_t> (clamp (sample, -2147483648, 2147483647));
1429+
return static_cast<int32_t> (clamp (sample, -2147483648LL, 2147483647LL));
14371430
else
14381431
return static_cast<int32_t> (clamp (sample, 0, 4294967295) - 2147483648);
14391432
}

tests/SampleConversionTests.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,7 @@ TEST_SUITE ("SampleConversionTests::32-bit Conversions")
702702
REQUIRE_EQ (AudioSampleConverter<int64_t>::thirtyTwoBitIntToSample (0), 0);
703703
REQUIRE_EQ (AudioSampleConverter<int64_t>::thirtyTwoBitIntToSample (-1073741824), -1073741824);
704704
REQUIRE_EQ (AudioSampleConverter<int64_t>::thirtyTwoBitIntToSample (-2147483647), -2147483647);
705-
REQUIRE_EQ (AudioSampleConverter<int64_t>::thirtyTwoBitIntToSample (-2147483648), -2147483648);
705+
REQUIRE_EQ (AudioSampleConverter<int64_t>::thirtyTwoBitIntToSample (-2147483648), -2147483648LL);
706706
}
707707

708708
//=============================================================
@@ -759,13 +759,13 @@ TEST_SUITE ("SampleConversionTests::32-bit Conversions")
759759
REQUIRE_EQ (AudioSampleConverter<int32_t>::sampleToThirtyTwoBitInt (-2147483648), -2147483648);
760760
REQUIRE_EQ (AudioSampleConverter<int32_t>::sampleToThirtyTwoBitInt (std::numeric_limits<int32_t>::min()), -2147483648);
761761

762-
REQUIRE_EQ (AudioSampleConverter<int64_t>::sampleToThirtyTwoBitInt (std::numeric_limits<int32_t>::max()), 2147483647);
762+
REQUIRE_EQ (AudioSampleConverter<int64_t>::sampleToThirtyTwoBitInt (std::numeric_limits<int64_t>::max()), 2147483647);
763763
REQUIRE_EQ (AudioSampleConverter<int64_t>::sampleToThirtyTwoBitInt (2147483647), 2147483647);
764764
REQUIRE_EQ (AudioSampleConverter<int64_t>::sampleToThirtyTwoBitInt (1073741824), 1073741824);
765765
REQUIRE_EQ (AudioSampleConverter<int64_t>::sampleToThirtyTwoBitInt (0), 0);
766766
REQUIRE_EQ (AudioSampleConverter<int64_t>::sampleToThirtyTwoBitInt (-1073741824), -1073741824);
767767
REQUIRE_EQ (AudioSampleConverter<int64_t>::sampleToThirtyTwoBitInt (-2147483647), -2147483647);
768-
REQUIRE_EQ (AudioSampleConverter<int64_t>::sampleToThirtyTwoBitInt (-2147483648), -2147483648);
769-
REQUIRE_EQ (AudioSampleConverter<int64_t>::sampleToThirtyTwoBitInt (std::numeric_limits<int32_t>::min()), -2147483648);
768+
REQUIRE_EQ (AudioSampleConverter<int64_t>::sampleToThirtyTwoBitInt (-2147483648LL), -2147483648LL);
769+
REQUIRE_EQ (AudioSampleConverter<int64_t>::sampleToThirtyTwoBitInt (std::numeric_limits<int64_t>::min()), -2147483648);
770770
}
771771
}

0 commit comments

Comments
 (0)