# HG changeset patch # User Chris Cannam # Date 1558087510 -3600 # Node ID 83cb6e9d769b0832b6cbbff4a0f583b314c02695 # Parent 978c143c767fbe5951ae7d8667aa4ca35137c3bf Attempt to cope with the fact that Windows Server (for CI builds) lacks certain codecs diff -r 978c143c767f -r 83cb6e9d769b data/fileio/test/AudioFileReaderTest.h --- a/data/fileio/test/AudioFileReaderTest.h Fri May 17 10:02:43 2019 +0100 +++ b/data/fileio/test/AudioFileReaderTest.h Fri May 17 11:05:10 2019 +0100 @@ -306,7 +306,7 @@ (audioDir + "/" + format + "/" + audiofile, params); if (!reader) { - if (isLegitimatelyUnsupported(format)) { + if (UnsupportedFormat::isLegitimatelyUnsupported(format)) { #if ( QT_VERSION >= 0x050000 ) QSKIP("Unsupported file, skipping"); #else diff -r 978c143c767f -r 83cb6e9d769b data/fileio/test/EncodingTest.h --- a/data/fileio/test/EncodingTest.h Fri May 17 10:02:43 2019 +0100 +++ b/data/fileio/test/EncodingTest.h Fri May 17 11:05:10 2019 +0100 @@ -139,7 +139,7 @@ if (!AudioFileReaderFactory::isSupported(encodingDir + "/" + audiofile)) { - if (isLegitimatelyUnsupported(extension)) { + if (UnsupportedFormat::isLegitimatelyUnsupported(extension)) { #if ( QT_VERSION >= 0x050000 ) QSKIP("Known unsupported file, skipping"); #else @@ -180,7 +180,7 @@ (encodingDir + "/" + audiofile, params); if (!reader) { - if (isLegitimatelyUnsupported(extension)) { + if (UnsupportedFormat::isLegitimatelyUnsupported(extension)) { #if ( QT_VERSION >= 0x050000 ) QSKIP("Unsupported file, skipping"); #else @@ -272,7 +272,7 @@ (encodingDir + "/" + audiofile, params); if (!reader) { - if (isLegitimatelyUnsupported(extension)) { + if (UnsupportedFormat::isLegitimatelyUnsupported(extension)) { #if ( QT_VERSION >= 0x050000 ) QSKIP("Unsupported file, skipping"); #else diff -r 978c143c767f -r 83cb6e9d769b data/fileio/test/UnsupportedFormat.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data/fileio/test/UnsupportedFormat.cpp Fri May 17 11:05:10 2019 +0100 @@ -0,0 +1,62 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +/* + Sonic Visualiser + An audio file viewer and annotation editor. + Centre for Digital Music, Queen Mary, University of London. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. See the file + COPYING included with this distribution for more information. +*/ + +#include "UnsupportedFormat.h" + +#ifdef Q_OS_WIN +#include +#endif + +bool +UnsupportedFormat::isLegitimatelyUnsupported(QString format) +{ +#ifdef Q_OS_WIN + // Our CI tests run on Windows Server, which annoyingly seems to + // come without codecs for WMA and AAC + + NTSTATUS(WINAPI *RtlGetVersion)(LPOSVERSIONINFOEXW); + *(FARPROC*)&RtlGetVersion = GetProcAddress + (GetModuleHandleA("ntdll"), "RtlGetVersion"); + + if (RtlGetVersion) { + + OSVERSIONINFOEXW osInfo; + osInfo.dwOSVersionInfoSize = sizeof(osInfo); + RtlGetVersion(&osInfo); + + if (osInfo.wProductType != VER_NT_WORKSTATION) { + cerr << "NOTE: We appear to be running on Windows Server (wProductType = " << osInfo.wProductType << ") - assuming encumbered media codecs might not be installed and being lenient about them" << endl; + return (format == "aac" || + format == "apple_lossless" || + format == "m4a" || + format == "wma"); + } + + } else { + cerr << "WARNING: Failed to find RtlGetVersion in NTDLL" << endl; + } + + return (format == "apple_lossless"); + +#else +#ifdef Q_OS_MAC + return (format == "wma"); +#else + return (format == "aac" || + format == "apple_lossless" || + format == "m4a" || + format == "wma"); +#endif +#endif +} diff -r 978c143c767f -r 83cb6e9d769b data/fileio/test/UnsupportedFormat.h --- a/data/fileio/test/UnsupportedFormat.h Fri May 17 10:02:43 2019 +0100 +++ b/data/fileio/test/UnsupportedFormat.h Fri May 17 11:05:10 2019 +0100 @@ -4,7 +4,6 @@ Sonic Visualiser An audio file viewer and annotation editor. Centre for Digital Music, Queen Mary, University of London. - This file copyright 2013 Chris Cannam. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -16,20 +15,12 @@ #ifndef SV_UNSUPPORTED_FORMAT_H #define SV_UNSUPPORTED_FORMAT_H -static bool isLegitimatelyUnsupported(QString format) { +#include -#ifdef Q_OS_WIN - return (format == "apple_lossless"); -#else -#ifdef Q_OS_MAC - return (format == "wma"); -#else - return (format == "aac" || - format == "apple_lossless" || - format == "m4a" || - format == "wma"); -#endif -#endif -} +struct UnsupportedFormat { + + static bool isLegitimatelyUnsupported(QString format); + +}; #endif diff -r 978c143c767f -r 83cb6e9d769b data/fileio/test/files.pri --- a/data/fileio/test/files.pri Fri May 17 10:02:43 2019 +0100 +++ b/data/fileio/test/files.pri Fri May 17 11:05:10 2019 +0100 @@ -13,4 +13,5 @@ TEST_SOURCES += \ ../../model/test/MockWaveModel.cpp \ + UnsupportedFormat.cpp \ svcore-data-fileio-test.cpp diff -r 978c143c767f -r 83cb6e9d769b data/fileio/test/svcore-data-fileio-test.cpp --- a/data/fileio/test/svcore-data-fileio-test.cpp Fri May 17 10:02:43 2019 +0100 +++ b/data/fileio/test/svcore-data-fileio-test.cpp Fri May 17 11:05:10 2019 +0100 @@ -103,3 +103,4 @@ return 0; } } +