aboutsummaryrefslogtreecommitdiff
path: root/audio
AgeCommit message (Collapse)Author
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.
2016-11-25Revert "MT32: Update Munt to 2.0.0"Colin Snover
This reverts commit b4dbd6d3c275097b4be964b7da4478ff930cbaa7.
2016-11-25MT32: Update Munt to 2.0.0Colin Snover
This changeset also removes unnecessary direct modifications to Munt code to ease future updates. To update Munt 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 match the list of sources given in `mt32emu/CMakeLists.txt libmt32emu_SOURCES`.
2016-10-29MT32: Use OSDMessageQueue to post OSD messages from the MT32 threadThierry Crozat
2016-10-09JANITORIAL: Remove more trailing spacesEugene Sandulenko
2016-09-19AUDIO: Keep packetized MP3 stream from ending prematurelyTorbjörn Andersson
This fixes the audio in the intro AVI movie for German Fullpipe.
2016-09-07AUDIO: Fix CMS chips incorrect pitch.jepael
The CMS emulation assumes the chips run at 8 MHz clock, but in PCs they run at 7.15909 MHz, so the emulated pitch is too high. Adjusting the requested sampling rate higher by matching amount the pitch is lowered down to normal.
2016-09-03AUDIO: Whitespace fix in MP3 engine usage listPaul Gilbert
2016-09-02AUDIO: Add Titanic to list of engines using MP3 decoderPaul Gilbert
2016-09-02AUDIO: Disable MP3 decoding in Wave files if MAD dependency is disabledPaul Gilbert
2016-09-02AUDIO: Add support for MP3 encoded data in WAVE filesPaul Gilbert
This is needed for playback of Starship Titanic speech data
2016-08-05AUDIO: Add titanic to list of engines using wave filesPaul Gilbert
2016-07-31AUDIO: Fix buildWillem Jan Palenstijn
2016-07-31AUDIO: Fix indentationEugene Sandulenko
2016-07-06AUDIO: Fix audio corruption in MS ADPCM decoderTorbjörn Andersson
Since _decodedSamples[] is filled with either 2 or 4 samples, we can't use 1 - (count - 1) to "ensure that acts as a FIFO". When we have 4 samples, that index will become negative, putting uninitialized data into the buffer. We could still use a similar trick, but I think it's much clearer to use an index variable like this. We need an addition variable either way.
2016-06-21AUDIO: Fix incorrect forward declarationColin Snover
2016-06-19AUDIO: Make WAV streams seekableColin Snover
This allows raw PCM in WAVE containers to have duration and be seekable, and opens the door for ADPCM streams to be seekable later if necessary. This change is needed to avoid duplication of RIFF/WAVE container parsing for SCI engine, which uses raw PCM WAVE files and needs to be able to determine their lengths.
2016-05-31AUDIO: Fix memory corruption.Eugene Sandulenko
Since it was --voice, we were reading element index -1.
2016-05-15AUDIO: Plug potential memory leakEugene Sandulenko
2016-05-08AUDIO FM-TOWNS: Fix copy/paste errorEugene Sandulenko
2016-04-14JANITORIAL: Reduce audio header dependenciesOri Avtalion
2016-03-28JANITORIAL: Mark audio/decoders/vorbis as: used in WintermuteTobia Tesan
2016-03-18AUDIO: Use MUNT's sample rate for MT-32 emulation.Johannes Schickel