Commit Graph
370 Commits
Author SHA1 Message Date
Einar Johan Trøan Sømåen 06c3a73289 AUDIO: Fix some Doxygen comments that seem wrong. 2014-08-29 03:29:13 +02:00
Matthew Hoops d2bf7f99fd AUDIO: Really fix seeking with audio edits
I really have no idea what I was thinking in acb127c2
2014-08-14 20:16:14 -04:00
Eugene Sandulenko 6e794a9823 Merge pull request #487 from clone2727/audio_fixes
AUDIO: Miscellaneous AudioStream fixes
2014-08-09 15:33:50 +02:00
Matthew Hoops dc155b23f0 AUDIO: Better handle endOfStream() vs endOfData() in SubSeekableAudioStream 2014-08-01 01:47:30 -04:00
Matthew Hoops d8ef40879c AUDIO: Better handle endOfStream() vs endOfData() in SubLoopingAudioStream 2014-08-01 01:39:46 -04:00
Joni Vähämäki 1d12bddd63 AUDIO: Rename MP3Stream's _totalTime to _curTime to better reflect the variable's purpose. 2014-08-01 01:43:04 +03:00
Matthew Hoops 82d464367b AUDIO: Better handle endOfStream() vs endOfData() in LoopingAudioStream 2014-07-27 23:44:45 -04:00
Matthew Hoops 931e2e16f7 AUDIO: Fix endOfStream() for LimitingAudioStream 2014-07-27 23:44:45 -04:00
Matthew Hoops 6d632dda27 AUDIO: Better handle endOfStream() vs endOfData() in QueuingAudioStreamImpl 2014-07-27 23:44:44 -04:00
Matthew Hoops d2353964b8 AUDIO: Fix QueuingAudioStreamImpl locking 2014-07-27 23:44:44 -04:00
Matthew Hoops 1b834f92bd AUDIO: Finish off AAC/QDM2 queues when done decoding a packet 2014-07-27 23:44:44 -04:00
Joni Vähämäki 8564c7ec0a AUDIO: Increment total play time when decoding MP3 data. 2014-07-26 14:30:56 +03:00
Filippos Karapetis f953e3a435 MT32: Sync with the latest changes in munt
This syncs the code with munt commit fa8b4f899d, avoiding usage of a
global constructor
2014-07-13 17:12:04 +03:00
Johannes Schickel 32df9f7759 MT32: Comment out default showLCDMessage/printDebug implementations.
This keeps the original MUNT code in showLCDMessage/printDebug and simply
comments it out. This *silences* a warning about debug use in our former
default replacement code. Since we already implement a ReportHandler there
is no need to adapt the default implementation.

This is not the cleanest way but the solution which requires the least changes
to MUNT code.
2014-07-11 00:56:10 +02:00
Johannes Schickel f8d0a48dcd Revert "MT32: Avoid runtime abort due to non-POD object pass in MT32 Emulator."
This reverts commit 6731eb21e3.
2014-07-11 00:38:31 +02:00
D G Turner 6731eb21e3 MT32: Avoid runtime abort due to non-POD object pass in MT32 Emulator. 2014-07-10 23:11:20 +01:00
Filippos Karapetis 8c5f67568f MT32: Update to munt 1.4.0
This syncs with munt commit 175446af43
2014-07-08 00:02:18 +03:00
Filippos Karapetis 10c7986a36 MT32: Copyright year bump 2014-07-08 00:02:17 +03:00
Max Horn 4d02f67bd1 ALL: Resolve multiple clang warnings 2014-03-30 14:38:02 +02:00
Matthew Hoops 9630753861 COMMON: Move some QuickTime Track variables into SampleDesc where they belong 2014-03-18 19:12:20 -04:00
Johannes Schickel 0063c25805 AUDIO: Manually specify function alignment in ARM assembly. 2014-03-06 20:21:48 +01:00
Johannes Schickel 452cec49d9 AUDIO: Make GPL headers consistent in themselves. 2014-02-18 02:39:32 +01:00
Alyssa Milburn f92df4c6aa Revert "AUDIO: Simplify MidiTracker::processEvent return value"
MI2 deletes the parser object(!) so we can't access any member
variables here. Thanks to athrxx for finding this.

This reverts commit 86c2fe47e0 and adds
a comment explaining why.
2014-01-27 00:20:50 +01:00
Alyssa Milburn 83ce4cfb5e Revert "AUDIO: fix invalid mem access in midiparser.cpp"
This broke SCI, since it doesn't call processEvent any more.

This reverts commit afa54072a9.
2014-01-27 00:08:57 +01:00
athrxx afa54072a9 AUDIO: fix invalid mem access in midiparser.cpp
(this caused a crash in MI2)
2014-01-26 22:51:39 +01:00
Johannes Schickel 417064e311 Merge pull request #417 from digitall/STACK_fixes
ALL: Fix optimization unstable code on checking for null after new.
2014-01-17 17:48:16 -08:00
Johannes Schickel e00ae0918a AUDIO: Cleanup MT-32 code a bit.
This removes overwrites in ReportHandlerScummVM which are simply the default
implementation anyway. A side effect is that this silences/fixes a warning
about the former onProgramChanged to hide an virtual method due to parameter
differences.
2014-01-16 22:46:21 +01:00
Johannes Schickel 1eb10b1a46 AUDIO: Register EAS sound driver as plain sound type.
MIDI code will control volume via MIDI events thus the generated audio should
not be affected by mixer sound volumes.

The initial commit 0e6cdfd675 added it as music
sound type. Might be copied from the (also) incorrect FluidSynth code.
2014-01-16 22:21:39 +01:00
Johannes Schickel d99f23fb10 AUDIO: Register FluidSynth driver as plain sound type.
MIDI code will control volume via MIDI events thus the generated audio should
not be affected by mixer sound volumes.

The initial commit(s) in d4d045b117 /
13dc149ded added it as music sound type.
So, this seems to be a long standing issue.
2014-01-16 22:20:23 +01:00
Johannes Schickel 5ea87462e4 AUDIO: Register MT-32 emulator as plain sound type.
Formerly the audio stream was registered as sfx. This is incorrect behavior
since the client code will control music volume with MIDI events on its own.
It seems 67b311713d introduced this very long
ago.

This should fix unintended coupling of sfx volume and music volume in BASS.
2014-01-16 22:18:47 +01:00
D G Turner ac4087856f ALL: Remove optimization unstable code on checking for null after new.
These issues were identified by the STACK tool.

By default, the C++ new operator will throw an exception on allocation
failure, rather than returning a null pointer.

The result is that testing the returned pointer for null is redundant
and _may_ be removed by the compiler. This is thus optimization
unstable and may result in incorrect behaviour at runtime.

However, we do not use exceptions as they are not supported by all
compilers and may be disabled.

To make this stable without removing the null check, you could qualify
the new operator call with std::nothrow to indicate that this should
return a null, rather than throwing an exception.

However, using (std::nothrow) was not desirable due to the Symbian
toolchain lacking a <new> header.
A global solution to this was also not easy by redefining "new" as "new
(std::nothrow)" due to custom constructors in NDS toolchain and various
common classes.

Also, this would then need explicit checks for OOM adding to all new
usages as per C malloc which is untidy.

For now to remove this optimisation unstable code is best as it is
likely to not be present anyway, and OOM will cause a system library
exception instead, even without exceptions enabled in the application
code.
2014-01-15 02:36:19 +00:00
Johannes Schickel b22aeafcc8 AUDIO: Do not add extrapath to SearchMan in MT-32 emu code.
At the point where the emulator is created extrapath should already been
added to extrapath. If not, the check in checkDevice already failed and thus
adding it would be too late anyway.

It seems this was added in 805b21181a. The
comment about it being a HACK has been removed in bbad3f333a
but it's not clear to my why... At any rate, this should not be here.
2013-11-03 19:36:04 +01:00
Filippos Karapetis eb84b9fc02 MT-32: Update to munt 1.3.0 2013-09-24 11:30:46 +03:00
Willem Jan Palenstijn 3792af8e95 AUDIO: Simplify SCI inFastForward flag by moving it to MidiParser 2013-09-21 09:31:08 +02:00
Willem Jan Palenstijn 86c2fe47e0 AUDIO: Simplify MidiTracker::processEvent return value 2013-09-21 01:08:26 +02:00
Willem Jan Palenstijn da81c59308 AUDIO: Let jumpToTick use processEvent too 2013-09-21 00:22:58 +02:00
Willem Jan Palenstijn 6c5a5cd8e9 AUDIO: Split event processing from MidiParser::onTimer
This is to prepare for overriding more of this functionality in SCI.
2013-09-21 00:22:56 +02:00
Filippos Karapetis 00992c1e68 MT-32: Sync with the latest changes in munt 2013-08-21 03:41:30 +03:00
Eugene Sandulenko 2c812ade01 Merge pull request #353 from clone2727/eventrec_timer_fix
ALL: Don't use EventRecorder at all when not compiled in
2013-07-18 08:15:28 -07:00
Sven Hesse 989ea7cb56 JANITORIAL: Remove trailing whitespace 2013-07-14 19:01:47 +02:00
Matthew Hoops 4a7e4e5b22 ALL: Don't use EventRecorder at all when not compiled in 2013-07-06 23:54:45 -04:00
D G Turner 9fb96a9256 AUDIO: Further fix to ReportHandlerScummVM::printDebug in MT32 code. 2013-07-06 04:05:22 +01:00
Johannes Schickel d7ff665737 AUDIO: Fix ReportHandlerScummVM::printDebug in MT32 code.
Formerly it tried to pass 'va_list' as '...' to debug. Now it's first creating
a String containing the output via String::vformat and then passing it
to debug.

Found by buildbot (master-dc). The warning message was:
audio/softsynth/mt32.cpp:65: warning: cannot pass objects of non-POD type
`struct va_list' through `...'; call will abort at runtime
2013-07-04 14:44:41 +02:00
Eugene Sandulenko 49210a803a Merge pull request #331 from sev-/gsoc2012-eventsrecorder
GSoC2012: Event Recorder (reworked)
2013-07-04 04:58:54 -07:00
Filippos Karapetis 5f3ddae421 MT-32: Sync with the latest changes in munt
This syncs our code with munt commits 258cd89 and 17b40a6
2013-07-02 03:53:09 +03:00
Johannes Schickel a1cfe235e4 AUDIO: Reduce callback frequency of the MT-32 emulator.
Formerly the frequency was at 10000Hz. This resulted in 3,4 or even only 1
sample to be generated between callbacks on my system. All the other MIDI
drivers use a much lower frequency here. The MidiDriver_Emulated subclasses
use a frequency of 250Hz (by default) and the MidiDriver_MPU401 subclasses
(which are for example the ALSA output) use 100Hz. With the new frequency
of 250Hz 128 samples are generated between callbacks. This will hopefully
reduce the overhead of the MT-32 emulator (the engine's code was run 10000
times a second too) a bit.

I talked with KingGuppy and it seems the value was increased in the past
(still with the very old MT-32 emulator code) because there were accuracy
issues. However, I gave the lower frequency a quick test with the MI1, MI2
and ITE intro and didn't spot any obvious differences. As a result, KingGuppy
and I agreed to lower it back to 250Hz. If there are any problems coming up
we can still slightly increase the frequency to 1000Hz for example.

Thanks to waltervn for noticing this. Thanks to KingGuppy for discussion.
2013-05-17 00:40:34 +02:00
Eugene Sandulenko f59512c47e RECORDER: Implement Events Recorder 2013-05-17 00:18:09 +03:00
Torbjörn Andersson 6bcc4136a8 XMIDI: Forget old loop points when changing track
This fixes warnings that would appear after a little while in
Kyrandia 2, which would happen because every time the music
changed it would add a new loop point. This was probably harmless
because once the list was full it would keep re-using the last
element, and I imagine all songs were set to loop forever. But
this should be more correct, as I understand it.
2013-05-04 21:57:00 +02:00
Eugene Sandulenko 5cc5104692 AUDIO: Fix uninitalized variable. CID 1003160 2013-05-02 14:10:40 +03:00
Eugene Sandulenko 0a329688d3 AUDIO: Fix unitialized variable. CID 1003161 2013-05-02 14:07:44 +03:00