aboutsummaryrefslogtreecommitdiff
path: root/audio
AgeCommit message (Collapse)Author
2018-11-04AUDIO: Add a separate AC-3 decoderTorbjörn Andersson
This code comes from clone2727's now defunct (?) ac3 branch.
2018-08-27AUDIO: Free strings with delete[] instead of free()Torbjörn Andersson
Because scumm_strdup(), unlike strdup(), allocates strings with new, not malloc(). (CID 1395228, 1395233, 1395235, 1395236)
2018-08-20AUDIO: Fix Compilation with Fluidsynth v1.1.6 or earlier.D G Turner
The function signature for these functions was changed from (char *) to (const char *) in the v1.1.7 release, so compiling against Fluidsynth v1.1.6 or earlier requires the copying of the strings to prevent compilation errors such as "error: invalid conversion from 'const char*' to 'char*'". Normally, we would break compatibility with older versions as platforms should be using the latest Fluidsynth v1.X release of v1.1.11. However, since this is trivial to fix and prevents breakage for legacy platforms, am restoring the string duplication with scumm_strdup(). Apart from this, we should look at the Fluidsynth v2.X releases currently in RC testing as the API is now changed for this.
2018-08-18AUDIO: Remove unnecessary string duplications in FluidSynth driverColin Snover
2018-08-17JANITORIAL: Removing trailing spaces after int castsPaul Gilbert
2018-07-30AUDIO: Fix Compiler Shadowing Warnings.D G Turner
2018-07-22GUI: Use consistent capitalization for optionsThierry Crozat
As discussed on the mailing list we should use title capitalization only for push buttons and tabs and use sentence capitalization for everything else.
2018-05-24JANITORIAL: Fix trailing whitespaceAdrian Frühwirth
2018-05-05ALL: Use CLIP to clip volumesAdrian Frühwirth
2018-04-21AUDIO: Silence compiler warning in Nuked OPL emulatorAdrian Frühwirth
2018-04-19JANITORIAL: Fix whitespaceAdrian Frühwirth
2018-04-08AUDIO: add support for OPL2LPTVincent Bernat
The OPL2LPT is an OPL2 chip plugged on a parallel port. It is write-only but otherwise acts as a classic AdLib. This commit adds support for this device. User is expected to have the right permissions on the parallel port. By default, the first suitable parallel port is used. It is possible to override that with the hidden configuration setting "opl2lpt_parport". It depends on the presence of the libieee1284 library which abstracts a bit parallel port handling. An alternative would be to access directly /dev/parportX on Linux. This would amount of code but it would be Linux-only. Tested with Indy 3 and SOMI.
2018-04-07AUDIO: Really fix constant type in Nuked OPL emulatorAdrian Frühwirth
2018-04-07AUDIO: Specify constant type in Nuked OPL emulatorEugene Sandulenko
2018-04-07CONFIGURE: Do not even try to build Nuked OPL when disabledEugene Sandulenko
2018-04-07JANITORIAL: Add missing endlineEugene Sandulenko
2018-04-07AUDIO: Add Nuked OPL3 corenukeykt
2018-04-07DS: Fix compilation with devkitARM r47Cameron Cawley
2018-02-04SCUMM HE: Use Miles AdLib drivernukeykt
2018-01-21AUDIO: Fixes Protracker Portamento effectJoseph-Eugene Winzer
.period overflowed if .portaToNoteSpeed > .period in the else if case
2018-01-03MT32: Update to munt 2.3.0Tarek Soliman
This uses upstream commit 939cc986d9ffd044f8c6149361127ad5d94e430f Closes gh-1091
2017-12-20MT32: Remove executable flag from source filesTarek Soliman
2017-12-03ALL: Remove obsolete register keywordColin Snover
The register keyword was deprecated from the C++11 standard, <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4193.html#809>, and removed from the C++17 standard, <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4340>, so cannot exist in a well-formed C++17 program. It has never done anything in GCC <https://gcc.gnu.org/ml/gcc/2010-05/msg00113.html> and because of the way it is specified in the standard, it is “as meaningful as whitespace” <http://www.drdobbs.com/keywords-that-arent-or-comments-by-anoth/184403859>. The one remaining use of the register keyword is in the DS backend, where it is used to create a local register variable using the non-standard GCC Extended Asm feature. Closes gh-1079.
2017-12-03BASE: Remove bad casts between incompatible Plugin typesColin Snover
Previously, a C-style cast was used to convert a Common::Array<Plugin *>, populated with pointers to StaticPlugin and DynamicPlugin instances, to a Common::Array<PluginSubclass<T> *>, but PluginSubclass<T> is a *sibling* class to StaticPlugin/DynamicPlugin, so this cast was invalid and the results undefined. The methods for retrieving subclasses of plugins can't be easily changed to just generate an array of temporary wrapper objects that expose an identical API which dereferences to the preferred PluginObject subclass because pointers to these objects are retained by other parts of ScummVM, so the wrappers would needed to be persisted or they would need to just re-expose the underlying Plugin object again. This indicated that a way to solve this problem is to have the callers receive Plugin objects and get the PluginObject from the Plugin by explicitly stating their desired type, in a similar manner to std::get(std::variant), so that the pattern used by this patch to solve the problem. Closes gh-1051.
2017-12-01AUDIO: Fix UB shift of negative integer in AdLib driverColin Snover
2017-11-19AUDIO: Fix uninitialized data structures in PacketizedMP3StreamColin Snover
If the audio thread called to readBuffer before any packet had been added to the stream, the state of the stream would be changed from INIT to EOS. Later, when a packet was received, the state would go directly from EOS to READY, skipping decoder init, leaving garbage memory in the decoder structs and causing a crash of the decoder. Fixes Trac#9653.
2017-11-19AUDIO: Fix data race in PacketizedMP3StreamColin Snover
2017-11-08AUDIO: Switch to BitStreamMemoryStream in the QDM2 decoderBastien Bouclet
2017-11-08AUDIO: Add some padding to the QDM2 decoder input bufferBastien Bouclet
Fixes out of bounds reads in the Myst ME intro videos. OOB reads may happen because: - The bitstream implementation reads 4 bytes at a time, and the buffer size is not guaranteed to be a multiple of 4. - The huffman parsing code reads a fixed amount of bits when it sometimes needs not all of them. Also fixed bits vs bytes mismatch for the size parameter of the calls to the bitstream constructor, and removed a few unnecessary heap allocations. Fixes #10220.
2017-09-30AUDIO: QDM2: Use the shared int64 type instead of a custom oneBastien Bouclet
2017-09-22ALL: Specify the DisposeAfterUse constructor argument for dynamic memory ↵Bastien Bouclet
write streams
2017-09-21VIDEO: Change QT edit list to a Common::ArrayBastien Bouclet
And fix an out of bounds acces when seeking to the end of a video. Skipping samples is needed even when seeking through silent edits because a silent stream is queued for those. Fixes #10219.
2017-09-11AUDIO: Rename two functions in ModuleModXmS3mThierry Crozat
This is an attempt to fix a compilation error on some platforms. The error message seems to indicate that log2 might be a define on thos platforms. Note that the log2 implementation in ModuleModXmS3m is not the binary logarithm, and we cannot use Common::intLog2.
2017-09-11AUDIO: Import micromod code, xm/s3m/mod decoderSimei Yin
2017-09-10AUDIO: Fix compilation on AmigaOS 4Colin Snover
2017-09-09AUDIO: Mark SCI engine as using ADPCMColin Snover
2017-09-09AUDIO: Fix incorrect reading of DK3 ADPCM audio dataColin Snover
Previously, _topNibble was not reset at the beginning of a new audio block, and the alignment byte at the end of odd blocks was being read as audio data, which caused audible clicks and out-of-bounds sample generation. There may have also been read errors related to the use of continue/break keywords inside of a macro wrapped with do-while(0). The introduction of partial block reads in this code when it was converted from ffmpeg to a ReadStream interface was also confusing and somewhat inefficient (calling SeekableReadStream::pos frequently), so this code has been refactored for clarity and to improve efficiency by reducing the number of virtual calls. Error detection has also been improved somewhat by ensuring that there are enough bytes to read a block header, and that the step indexes in the header are within the valid range.
2017-08-24COMMON: Remove BitStream base class to allow inlining callsWillem Jan Palenstijn
All users of BitStream were in fact using a specific, hardcoded variant, so we can hardcode that variant, removing the need for virtual calls, and enabling inlining.
2017-08-12AUDIO: Fix some more suspicious-looking expessionsTorbjörn Andersson
GCC did not warn about these, but surely it should be bitwise OR, not logical OR, here as well. But I don't think I have any game that uses MaxTrax (Amiga version of Legend of Kyrandia?), so I can't really test this.
2017-08-11AUDIO: Fix insufficient memset length in FM-TOWNS synthesizerEugene Sandulenko
2017-08-11AUDIO: Fix incorrect boolean statement in MaxTrax decoderEugene Sandulenko
2017-08-06JANITORIAL: Silence some more GCC 7 fall through warningsTorbjörn Andersson
I think these are the last one that were already flagged as being deliberate.
2017-02-28MT32: Update Munt to 2.0.3Willem Jan Palenstijn
This update uses upstream commit 777c51cdb4dbb4e02a53c23edea9086f0b600e26. The new SampleRateConverter is added, but not built as we don't use it. Also, building it without source changes will need additional include directories. This update of Munt reduces the stack size, and thus fixes bug #9630.
2017-01-14MT32: Fix Set-But-Unused Compiler Warning.D G Turner
2016-12-20AUDIO: Support Wave files with an initial fact chunkPaul Gilbert
2016-12-18MT32: Really add the virtual destructorColin Snover
2016-12-18MT32: Fix virtual dtor warning, incorrect delete, unnecessary allocationColin Snover
2016-12-17MT32: Prevent Munt from including <fstream>Eugene Sandulenko
2016-12-16MT32: Fix driver to be thread-safeColin Snover
2016-12-16MT32: Update Munt to 2.0.1-preColin Snover
This update uses upstream commit f88ef828a600ce66d1f730c8fb2a7f580f6f6165. This update switches to use the new Munt C++ interface, which will allow ScummVM to link to an external Munt library instead of requiring it to be built-in in the future. For the moment, the emulator is still built-in, since it is not available from most package repositories. The Munt driver in ScummVM now uses writeSysex instead of the (now-private) playSysexWithoutFraming, per recommendation from the Munt team <https://github.com/munt/munt/pull/30>. This changeset also removes direct modifications that used to be made to Munt code, to ease future updates. To update Munt code in the future: 1. Replace all source files in the `softsynth/mt32` directory with new files from the upstream `mt32emu/src` directory; 2. Update `config.h` with the correct version number for the new version of Munt; 3. Update `module.mk` to add any new source files that need to be built.