1392 Commits

Author SHA1 Message Date
Johannes Schickel
aa92e004f5 First step of a slight revision of the new AudioStream looping API:
- Create a RewinadableAudioStream, for streams which can only be reset to the start
- Create a LoopableAudioStream, which loops a whole RewindableAudioStream
- Make SeekableAudioStream a subclass of RewindableAudioStream
- Create a SubSeekableAudioStream, which allows of limiting the range of an SeekableAudioStream to be played.

- Adapt AudioCD code.

svn-id: r47109
2010-01-07 14:20:36 +00:00
Johannes Schickel
b6fb8b349a Fix FLAC's getLength implementation.
svn-id: r47093
2010-01-06 20:25:19 +00:00
Johannes Schickel
f32aeb01bf Add a constructor to Timestamp, which allows for specifying seconds + start frames directly.
svn-id: r47091
2010-01-06 20:24:56 +00:00
Johannes Schickel
8c79b6f6ee Adapt FLAC and Vorbis to use calculateSampleOffset in their seek implementation.
svn-id: r47085
2010-01-06 16:11:21 +00:00
Max Horn
dd76e2bda0 Rename some Timestamp methods: getNumberOfFrames -> numberOfFrames and getFramerate -> framerate
svn-id: r47083
2010-01-06 15:56:04 +00:00
Johannes Schickel
297a955579 - Simplify Audio::calculateSampleOffset.
- Made Audio::calculateSampleOffset accessable from outside audiostream.cpp.
- Adapt KYRA's AUDStream to use Audio::calculateSampleOffset.

svn-id: r47082
2010-01-06 15:40:49 +00:00
Johannes Schickel
e72707b04e - Add some functionallity to query the seconds and number of frames stored in a Timestamp.
- Add tests for these

svn-id: r47081
2010-01-06 15:33:54 +00:00
Johannes Schickel
84f3034406 - Move openStreamFile from AudioStream to SeekableAudioStream.
- Fix documentation of openStreamFile.

svn-id: r47080
2010-01-06 15:23:33 +00:00
Max Horn
1c6ccf8000 Add more comparision operators to Timestamp
svn-id: r47071
2010-01-06 12:15:05 +00:00
Max Horn
5b635fd610 Change the way Timestamp stores its data.
Instead of storing milliseconds and frames (which causes rounding errors,
and causes ambiguity in how a given time is stored), we now do things
differently: We store a number of seconds, and frames. To make sure that
we can still handle milliseconds accurately, though, we change the
framerate to the least common multiple of the original framerate and
1000. So 60 becomes 6000, and 44100 becomes 441000. There are no visible
changes for client code, except for the increased accuracy.

svn-id: r47070
2010-01-06 12:09:14 +00:00
Johannes Schickel
789f2ce255 The current AIFF stream implementations returns a SeekableAudioStream, reflect that in its factory method.
svn-id: r47067
2010-01-06 00:02:49 +00:00
Johannes Schickel
8638d6ce61 Change the AudioStream::openStreamFile API to return SeekableAudioStreams and remove parameter for depreacted loop support. (We could consider moving this to SeekableAudioStream).
svn-id: r47065
2010-01-06 00:01:57 +00:00
Johannes Schickel
81a94a0644 - Put the new factories for MP3, Vorbis and FLAC in place.
- Marked the loop factories with loop related parameters as deprecated.

svn-id: r47061
2010-01-05 23:59:28 +00:00
Johannes Schickel
e38b7b3cc5 Properly initialize _pos in LoopingChannel.
svn-id: r47055
2010-01-05 22:02:04 +00:00
Johannes Schickel
7591a09365 Implement Timestamp::operator== as equality in time.
svn-id: r47054
2010-01-05 22:01:05 +00:00
Johannes Schickel
2d3a06f805 Cleanup.
svn-id: r47052
2010-01-05 22:00:06 +00:00
Robin Watts
61c413e114 Update ARM version of rate filler code in line with LordHoto's change
in revision 47014.

svn-id: r47051
2010-01-05 21:56:13 +00:00
Johannes Schickel
083cab5157 Cleanup.
svn-id: r47046
2010-01-05 21:10:58 +00:00
Johannes Schickel
caa3db4659 - Initial implementation of looping of SeekableAudioStreams in Mixer.
- Adapted AudioCD code to use this for audio CD emulation.

svn-id: r47045
2010-01-05 21:10:34 +00:00
Johannes Schickel
920dac2f9d Remove unsafe getTotalPlayTime from AudioStream.
svn-id: r47037
2010-01-05 20:14:28 +00:00
Johannes Schickel
e9a94ecb9b Add a "getLength" function to SeekableAudioStream.
svn-id: r47036
2010-01-05 20:13:31 +00:00
Johannes Schickel
7d126de793 Add some basic documentation to the new Channel interface.
svn-id: r47034
2010-01-05 19:52:50 +00:00
Johannes Schickel
7d5b2b118a - Do not calculate left/right channel volume every SimpleChannel::mix call anymore, but do it once
- Notify a channel, when it's channel volume type changed from inside MixerImpl::setVolumeForSoundType

svn-id: r47033
2010-01-05 19:52:32 +00:00
Johannes Schickel
4ebcd1c61c Get rid of public variables in Channel.
svn-id: r47032
2010-01-05 19:52:12 +00:00
Johannes Schickel
63bccc213b Create a generic Channel interface for the default Mixer implementation.
svn-id: r47031
2010-01-05 19:51:48 +00:00
Johannes Schickel
50888f5b65 - Fix a bug in Channel::pause for recursive pausing.
- Fix bug in Channel:getElapsedTime, when called while the channel is paused.

svn-id: r47029
2010-01-05 18:32:26 +00:00
Johannes Schickel
d485d0c295 Oops somehow I must have missed CopyRateConverter::flow, in r47014.
svn-id: r47016
2010-01-05 02:48:38 +00:00
Johannes Schickel
5b9f267e71 Use the return value of RateConverter::flow to calculate the decoded samples and not the upper bound "len". (This should only be a difference when the audio stream has no more samples left)
svn-id: r47015
2010-01-05 02:42:55 +00:00
Johannes Schickel
2ef2064f44 Make RateConverter::flow return the number of sample pairs written, like it's documented in the .cpp file.
svn-id: r47014
2010-01-05 02:42:35 +00:00
Johannes Schickel
f5c3bd887e - Add a new SeekableAudioStream interface. Soon to be used to replace audio stream specific looping code by generic code in Mixer...
- Adapted some existing AudioStreams to implement that interface (not tested!)

svn-id: r47013
2010-01-05 02:27:24 +00:00
Max Horn
645f73cb18 Switch Channel::getElapsedTime() to use a Timestamp for its computations
svn-id: r46995
2010-01-04 22:48:52 +00:00
Max Horn
4ae9412a3a Make some improvements for Audio::Timestamp.
* Add convertToFramerate() method
* Add framerate() method
* Add operator == and !=
* Improve frameDiff() to work for two timestamps with distinct framerates
* Improve Doxygen comments

svn-id: r46994
2010-01-04 22:48:28 +00:00
Johannes Schickel
b2355cac9f - Remove unsafe default constructor of Audio::Timestamp.
- Add an assert which prevents the _frameRate from being 0 in the Audio::Timestamp constructor.

svn-id: r46958
2010-01-03 22:41:35 +00:00
Torbjörn Andersson
72eb9ec9ea Fixed a bunch of cppcheck warnings. Mostly about checking if a pointer is null
before freeing it, which isn't necessary.

svn-id: r46941
2010-01-03 19:37:43 +00:00
Willem Jan Palenstijn
13a242838f SCI/new music code: Don't stop notes when looping for a hold
svn-id: r46897
2010-01-02 20:20:36 +00:00
Johannes Schickel
137744c40c This time properly fix getTotalPlayTime for looped FLAC, MP3 and VORBIS audio streams.
svn-id: r46863
2010-01-01 22:57:08 +00:00
Johannes Schickel
2e9d5a5f41 Mention in documentation of AudioStream::setNumLoops, that this function also resets the number of loops played counter.
svn-id: r46862
2010-01-01 22:56:18 +00:00
Johannes Schickel
6109275750 Properly reset _numPlayedLoops in setNumLoops in all AudioStream implementations implementing setNumLoops.
svn-id: r46861
2010-01-01 22:55:38 +00:00
Martin Kiewitz
f3cd114c5c init _numPlayedLoops inside LinearMemoryStream
svn-id: r46857
2010-01-01 22:16:53 +00:00
Johannes Schickel
bba2c8ce95 Fix getTotalPlayTime for MP3, FLAC, Vorbis and LinearMemoryStream after the latest loop related changes.
svn-id: r46838
2010-01-01 16:57:23 +00:00
Eugene Sandulenko
622dd0d16d Implemented setNumLoops() for common audio streams.
Implemented getNumPlayedLoops() for common audio streams.

Requested by m_kriewitz.

svn-id: r46836
2010-01-01 16:28:22 +00:00
Eugene Sandulenko
5ebadb10d4 Extend doxygen comment for setNumLoops()
svn-id: r46832
2010-01-01 15:35:12 +00:00
Martin Kiewitz
8ee5033bab Added setNumLoops() for linear memory streams, enables looping of samples in sci
svn-id: r46821
2010-01-01 13:31:02 +00:00
Martin Kiewitz
ea86c41cc5 Adding setNumLoops() to AudioStream class
svn-id: r46819
2010-01-01 13:11:34 +00:00
Fabio Battaglia
a108df30a7 Add Nintendo 64 port to trunk.
svn-id: r46773
2009-12-30 21:11:38 +00:00
Jordi Vilalta Prat
7475bbbc3f Fix bug #2923380 (AMIGAOS4: Compiler error)
svn-id: r46753
2009-12-30 15:41:11 +00:00
Eugene Sandulenko
fb8ecae7f1 Add Mohawk engine code. Part 2/3: common code changes.
svn-id: r46728
2009-12-29 23:20:23 +00:00
Johannes Schickel
5cd176052c Typo...
svn-id: r46319
2009-12-09 20:11:02 +00:00
Johannes Schickel
27e03012d5 This is hopefully fixing compilation of the fluidsynth code.
svn-id: r46318
2009-12-09 20:08:57 +00:00
Max Horn
c8873d8492 Changed MidiDriver::createMidi to take a MidiDriverType instead of an int
svn-id: r46316
2009-12-09 18:12:51 +00:00