Mercurial > hg > svcore
changeset 1714:83cb6e9d769b
Attempt to cope with the fact that Windows Server (for CI builds) lacks certain codecs
author | Chris Cannam |
---|---|
date | Fri, 17 May 2019 11:05:10 +0100 |
parents | 978c143c767f |
children | 9ec3f123f1fb |
files | data/fileio/test/AudioFileReaderTest.h data/fileio/test/EncodingTest.h data/fileio/test/UnsupportedFormat.cpp data/fileio/test/UnsupportedFormat.h data/fileio/test/files.pri data/fileio/test/svcore-data-fileio-test.cpp |
diffstat | 6 files changed, 74 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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
--- /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 <windows.h> +#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 +}
--- 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 <QString> -#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