diff options
Diffstat (limited to 'media-libs/chromaprint/files')
-rw-r--r-- | media-libs/chromaprint/files/chromaprint-1.4.3-test-bigendian.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/media-libs/chromaprint/files/chromaprint-1.4.3-test-bigendian.patch b/media-libs/chromaprint/files/chromaprint-1.4.3-test-bigendian.patch new file mode 100644 index 000000000000..dc080bb98470 --- /dev/null +++ b/media-libs/chromaprint/files/chromaprint-1.4.3-test-bigendian.patch @@ -0,0 +1,60 @@ +From 8d5f2ca81db8fae6b59b6b9b8bda91526507dbd1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Lalinsk=C3=BD?= <lukas@oxygene.sk> +Date: Sat, 10 Feb 2018 06:52:10 +0100 +Subject: [PATCH] Change LoadAudioFile to not depend on little-endian CPU + +Fixes https://github.com/acoustid/chromaprint/issues/46 +--- + tests/test_utils.cpp | 9 +++++++++ + tests/test_utils.h | 14 +++++++++----- + 2 files changed, 18 insertions(+), 5 deletions(-) + +diff --git a/tests/test_utils.cpp b/tests/test_utils.cpp +index fc8bb86..536f46e 100644 +--- a/tests/test_utils.cpp ++++ b/tests/test_utils.cpp +@@ -2,6 +2,7 @@ + #include <algorithm> + #include <limits> + #include "utils.h" ++#include "test_utils.h" + + using namespace chromaprint; + +@@ -92,3 +93,11 @@ TEST(Utils, CountSetBits64) { + EXPECT_EQ(64, CountSetBits(0xFFFFFFFFFFFFFFFFU)); + EXPECT_EQ(8, CountSetBits(0x0101010101010101U)); + } ++ ++TEST(Utils, LoadAudioFile) { ++ std::vector<short> data = LoadAudioFile("data/test_mono_44100.raw"); ++ ASSERT_EQ(data.size(), 176400/2); ++ EXPECT_EQ(data[1000], 0); ++ EXPECT_EQ(data[2000], 107); ++ EXPECT_EQ(data[3000], 128); ++} +diff --git a/tests/test_utils.h b/tests/test_utils.h +index 3631007..d01e9e3 100644 +--- a/tests/test_utils.h ++++ b/tests/test_utils.h +@@ -31,11 +31,15 @@ inline std::vector<short> LoadAudioFile(const std::string &file_name) + { + std::string path = TESTS_DIR + file_name; + std::ifstream file(path.c_str(), std::ifstream::in | std::ifstream::binary); +- file.seekg(0, std::ios::end); +- int length = file.tellg(); +- file.seekg(0, std::ios::beg); +- std::vector<short> data(length / 2); +- file.read((char *)&data[0], length); ++ uint8_t buf[4096]; ++ std::vector<int16_t> data; ++ while (!file.eof()) { ++ file.read((char *) buf, 4096); ++ size_t nread = file.gcount(); ++ for (size_t i = 0; i < nread - 1; i += 2) { ++ data.push_back((int16_t) (((uint16_t) buf[i+1] << 8) | ((uint16_t) buf[i]))); ++ } ++ } + file.close(); + return data; + } |