1514 Commits

Author SHA1 Message Date
Max Horn
95726dfe50 Move Mohawk's QueuedAudioStream to sound/ (with some tweaks)
svn-id: r47177
2010-01-08 22:04:30 +00:00
Johannes Schickel
271956f2d7 Add some warning inside makeLoopingAudioStream, in case the give start time is after the given end time.
svn-id: r47162
2010-01-08 16:38:51 +00:00
Johannes Schickel
616e4626f5 Since AudioStream looping is no longer handled by the Mixer, drop Mixer::playAudioStreamLooping. (There's Audio::makeLoopingAudioStream).
svn-id: r47160
2010-01-08 16:27:29 +00:00
Johannes Schickel
e976b11995 Add another makeLoopingAudioStream factory for transparently looping a certain interval of a SeekableAudioStream.
svn-id: r47159
2010-01-08 16:25:51 +00:00
Johannes Schickel
a5adbb851a Fix use of getRate in VorbisInputStream's constructor. (Thanks to cyx for spotting this)
svn-id: r47144
2010-01-07 23:50:18 +00:00
Johannes Schickel
a15cc002bb Cleanup.
svn-id: r47139
2010-01-07 20:13:02 +00:00
Johannes Schickel
bd651c6c3d Fix a little bug in LoopingAudioStream::readBuffer.
svn-id: r47138
2010-01-07 19:34:19 +00:00
Johannes Schickel
127213f706 Remove setNumLoops and getNumPlayedLoops from AudioStream.
svn-id: r47137
2010-01-07 17:45:38 +00:00
Johannes Schickel
aa2f55ddc6 Remove the deprecated FLAC, Vorbis and MP3 factories.
svn-id: r47134
2010-01-07 17:14:44 +00:00
Johannes Schickel
b47725540f Cleanup.
svn-id: r47133
2010-01-07 17:04:32 +00:00
Johannes Schickel
a597e5fef9 Make VagStream a RewindableAudioStream.
svn-id: r47132
2010-01-07 17:04:01 +00:00
Johannes Schickel
d5fe29c3c9 Make makeWAVStream return a RewindableAudioStream.
svn-id: r47129
2010-01-07 16:34:56 +00:00
Johannes Schickel
ca5e137945 Create a wrapper makeLoopingAudioStream to reduce code duplcation.
svn-id: r47128
2010-01-07 16:18:03 +00:00
Johannes Schickel
2e9bae44c5 Let ADPCM streams subclass RewindableAudioStreams and thus allow them to be looped with the new looping code.
svn-id: r47127
2010-01-07 16:08:41 +00:00
Max Horn
4f463e288e Get rid of calculatePlayTime, instead store playtimes as Timestamps
svn-id: r47122
2010-01-07 15:25:14 +00:00
Max Horn
32ec5746be Add Timestamp::totalNumberOfFrames() method, clarify some comments
svn-id: r47120
2010-01-07 15:12:20 +00:00
Max Horn
423094cd5f Fix warning
svn-id: r47119
2010-01-07 15:11:46 +00:00
Johannes Schickel
c57549184b Add important note for engine authors about SubSeekableAudioStream.
svn-id: r47114
2010-01-07 14:25:16 +00:00
Johannes Schickel
6abc10c6ea Add a playInputStreamLooping for RewindableAudioStream to Mixer.
svn-id: r47113
2010-01-07 14:23:42 +00:00
Johannes Schickel
e00f36f9c7 Cleanup.
svn-id: r47112
2010-01-07 14:22:57 +00:00
Johannes Schickel
b80779824f - Strip custom looping code out of FLAC, Vorbis and MP3 streams
- Adapt the legacy make*Stream factories to use the new AudioStream subclasses
- Change return value of make*Stream back to AudioStream *

svn-id: r47111
2010-01-07 14:22:24 +00:00
Johannes Schickel
49e53ade00 Switch Mixer back to use only one Channel implementation. (partial revert of r47031 + r47034).
svn-id: r47110
2010-01-07 14:21:13 +00:00
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