1.1.0 ----- Main - Implemented support for digital surround (up to 6 channels, 5:1). - Implemented network support (i.e. Voodoo Sound). API - Added FSChannelMode, defining channels configuration. API | IFusionSound - Added GetMasterVolume()/SetMasterVolume(). - Added GetLocalVolume()/SetLocalVolume(), specifying a volume level affecting all local playbacks. - Added Suspend() and Resume(). API | IFusionSoundStream - Added Access() and Commit(), implementing direct access to the ring buffer. API | IFusionSoundPlayback - Added SetDownmixLevels(), specifying the downmixing levels for the center and rear channels in case of digital surround to stereo/mono conversion. API | IFusionSoundMusicProvider - now GetBufferDescription() returns the total amount of frames in the current track. Core - Implemented Direct Memory Access to the output device. - Added a fork+wait behaviour that, instead of killing the slaves on exit, makes the master fork and wait until they have finished playing. - Added deinitialization checking. Mixing Core - Implemented conversion from digital surround to stereo/mono and vice versa. Drivers - ALSA supports DMA. - Implemented Suspend and Resume. Music Providers - Added FFmpeg music provider, supporting wma, real audio, ac3 and flac. - Implemented missing channel conversions. Network - Added network support to FusionSound, i.e. Voodoo Sound. - Implemented a fast audio compression method (called DPACK) for remote sessions. Runtime Options - Added option "channelmode", specifying channels configuration. - Added option "[no]-wait", specifying whether fusionsound should wait until slaves have finished playing instead of terminating them. - Added option "[no]-deinit-check", disabling deinitialization checking. - Added option "[no]-dither", enabling dithering. - Added option "[no]-dma", enabling DMA (if supported by the driver). - Added option "remote", to select the remote session for Voodoo Sound. - Added option "remote-compression", to select the compression method for Voodoo Sound. Build Options - Removed "enable-dithering", now enabled runtime. - Added "disable-multichannel", builds stereo/mono only. - Added "with-voodoo". Tools - Added fsvolume, to query/change the master volume level. - Added fsproxy. 1.0.0 ----- Mixing Core - Fixed the garbage-with-large-output-buffer problem: repeat last sample instead of interpolating with "dirty" data. - Round samples if dithering is disabled. - Improved noise shaping filter's precision. Drivers | ALSA - Handles suspend. Music Providers | Vorbis - Optionally supports using Tremor (fixed integer decoder). Tools - Added fsplay, a simple command line player. 1.0.0-rc1 --------- API - Added FSSF_FLOAT. API | IFusionSound - Added GetDeviceDescription() to query information about the output device. API | IFusionSoundBuffer - Removed SetPan() and FSPLAY_PAN. - Added SetPosition() to set the buffer position indicator for subsequent access or playback. - Modified Lock() to return the amount of available space in frames and/or bytes. - Added FSPLAY_CYCLE that plays the buffer for one cycle, wrapping at the end. - Added FSPLAY_REWIND that plays the buffer reversing sample order. API | IFusionSoundStream - Added Drop() to discard any pending input data, making Write() return as soon as possible. API | IFusionSoundPlayback - Added SetDirection() to set the direction of playback (FORWARD, BACKWARD). - Changed maximum Volume/Pitch level to 64.0. API | IFusionSoundMusicProvider - Added FMCAPS_HALFRATE, meaning that the provider can decode samples at half original rate (this doesn't imply resampling). - GetTrackDescription() can return information about the replay gain. - FMBufferCallback returns FMBufferCallbackResult to allow aborting playback. - Added GetStatus() to query the playback status. - Added SetPlaybackFlags(). Core - Added support for loadable device drivers. - Added object CoreSoundDevice. Playback Core - Don't keep status based on notifications, but use a new function called fs_playback_get_status() to sychronously query the actual value. This fixes Wait() returning immediately when directly called after Start(). Mixing Core - Supports mixing samples in reverse order (i.e. rewinding). - Supports dithered conversion (with noise shaping) between __fsf and s16/u8. - Improved performace of linear upsampling algorithm. - Achieves higher precision during resampling. - Reduced loss of bits during multiplication when "precision" is disabled. - Dowmix stereo to mono before converting to output format and round samples before conversion. Drivers - Added ALSA, OSS and Wave drivers. Music Providers - Added a music provider for playlists. - Wave Provider can skip unknown chunks before data. Runtime Options - Added option "driver" to specify the driver to use. - Added option "buffertime" to specify the output buffer duration. - Added options "quiet", "[no-]debug", "[no-]trace", "[no-]banner". Build Options - Option "enable-accuracy" renamed "enable-precision". - Added option "enable-linear-filter". - Added option "enable-dithering". 0.9.25 ------ API | IFusionSoundMusicProvider - Added FMCAPS_RESAMPLE. Core - Create a new fusion world by default (this fixes the dfb-slave-but-fs-master problem). - Open the output device in non-blocking mode. Mixing Core - Use cpp templates for mixing routines. - Supports upsampling with linear interpolation. Runtime Options - Added option "session". 0.9.23 ------ API - Detached FusionSound versioning from DirectFB. - Added FusionSoundCheckVersion(). - Added FusionSoundErrorFatal(). - Added FusionSoundUsageString(). - Added FSSF_S24 and FSSF_S32. - Added macros extracting information from FSSampleFormat. API | IFusionSoundMusicProvider - Added support for multi-container formats: EnumTracks() iterates through available tracks, GetTrackDescription() retrieves information about the current track, GetTrackID() and SelectTrack() can be used to select a track for playback. - Method PlayTo() renamed PlayToStream(). - Added GetBufferDescription() and PlayToBuffer(). Mixing Core - Introduced __fsf, an internal sampleformat used for mixing that can be either a floating-point or a fixed-point number. Music Providers - Added Wave, Vorbis, MAD (MPEG Audio Decoder) and CD-DA music providers. Runtime Options - Initial support for runtime options. - Added option "device" to specify the output device. - Added options controlling the device configuration ("samplerate", "sampleformat", "channels"). Build Options - Added option "enable-ieee-float" to enable using floating-point arithmetics from internal mixing routines. - Added option "enable-accuracy", enables using 64bit multiplication on 32bit machines to achieve high precision when using fixed-point arithmentics. - Added option "enable-module" to enable building modular version of FusionSound.