Mercurial > hg > svcore
diff data/fileio/test/UnsupportedFormat.cpp @ 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 | |
children | 9ec3f123f1fb |
line wrap: on
line diff
--- /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 +}