FLAC Logo
  home  |   faq  |   news  |   download  |   features  |   goals  |   format  |   id  |   comparison  |   documentation  |   changelog  |   links  |   developers  
  english  |   russian  
changelog

This is an informal changelog, a summary of changes in each release. Particulary important for developers is the precise description of changes to the library interfaces.

FLAC 1.1.1

  • General:
    • Ogg FLAC seeking now works
    • New PPC optimizations almost double the decoding speed on OS X
    • A native OS X release thanks to updated Project Builder and autotools files
  • FLAC format:
    • Made invalid the metadata block type 127 so that audio frames can always be distinguished from metadata by seeing 0xff as the first byte.
  • flac:
    • Print an error when output file already exists instead of automatically overwriting.
    • New option -f (--force) to force overwriting if the output file already exists.
    • New option --cue to select a specific section to decode using cuesheet track/index points.
    • New option --totally-silent to suppress all output.
    • New (but undocumented) option --apply-replaygain-which-is-not-lossless which applies ReplayGain to the decoded output. See this thread for usage and caveats.
    • When encoding to Ogg FLAC, use a random serial number (instead of 0 as was done before) when a serial number is not specified.
    • When encoding multiple Ogg FLAC streams, --serial-number or random serial number sets the first number, which is then incremented for subsequent streams (before, the same serial number was used for all streams).
    • Decoder no longer exits with an error when writing to stdout and the pipe is broken.
    • Better explanation of common error messages.
    • Default extension when writing AIFF files is .aif (before, it was .aiff).
    • Write more common representation of SANE numbers in AIFF files.
    • Bug fix: calculating ReplayGain on 48kHz streams.
    • Bug fix: check for supported block alignments in WAVE files.
    • Bug fix: #679166: flac doesn't respect RIFF subchunk padding byte.
    • Bug fix: #828391: --add-replay-gain segfaults.
    • Bug fix: #851155: Can't seek to position in flac file.
    • Bug fix: #851756: flac --skip --until reads entire file.
    • Bug fix: #877122: problem parsing cuesheet with CATALOG entry.
    • Bug fix: #896057: parsing ISRC number from cuesheet.
  • metaflac:
    • Better explanation of common error messages.
    • Bug fix: calculating ReplayGain on 48kHz streams.
    • Bug fix: incorrect numbers when printing seek points.
  • plugins:
    • Speed optimization in ReplayGain synthesis.
    • Speed optimization in XMMS playback.
    • Support for big-endian architectures in XMMS plugin.
    • Bug fix: make hard limiter default to off in XMMS plugin.
    • Bug fix: stream length calculation bug in XMMS plugin, debian bug #200435; see also.
    • Bug fix: small memory leak in XMMS plugin.
  • build system:
    • ordinals.h is now static, not a build-generated file anymore.
  • libraries:
    • libFLAC: PPC+Altivec optimizations of some decoder routines.
    • libFLAC: Make stream encoder encode the blocksize and sample rate in the frame header if at all possible (not in STREAMINFO), even if subset encoding was not requested.
    • libFLAC: Bug fix: fixed seek routine where infinite loop could happen when seeking past end of stream.
    • libFLAC, libFLAC++: added methods to skip single frames, useful for quickly finding frame boundaries (see interface changes below).
    • libOggFLAC, libOggFLAC++: New seekable-stream and file encoder and decoder APIs to match native FLAC APIs (see interface changes below).
  • Interface changes:
    • libFLAC:
      • Added FLAC__metadata_get_tags()
      • Added callback-based versions of metadata editing functions:
        • FLAC__metadata_chain_read_with_callbacks()
        • FLAC__metadata_chain_write_with_callbacks()
        • FLAC__metadata_chain_write_with_callbacks_and_tempfile()
        • FLAC__metadata_chain_check_if_tempfile_needed()
      • Added decoder functions for skipping single frames, also useful for quickly finding frame boundaries:
        • FLAC__stream_decoder_skip_single_frame()
        • FLAC__seekable_stream_decoder_skip_single_frame()
        • FLAC__file_decoder_skip_single_frame()
      • Added new required tell callback on seekable stream encoder:
        • FLAC__SeekableStreamEncoderTellStatus and FLAC__SeekableStreamEncoderTellStatusString[]
        • FLAC__SeekableStreamEncoderTellCallback
        • FLAC__seekable_stream_encoder_set_tell_callback()
      • Changed FLAC__SeekableStreamEncoderState by adding FLAC__SEEKABLE_STREAM_ENCODER_TELL_ERROR
      • Changed Tell callback is now required to initialize seekable stream encoder
      • Deleted erroneous and unimplemented FLAC__file_decoder_process_remaining_frames()
    • libFLAC++:
      • Added FLAC::Metadata::get_tags()
      • Added decoder functions for skipping single frames, also useful for quickly finding frame boundaries:
        • FLAC::Decoder::Stream::skip_single_frame()
        • FLAC::Decoder::SeekableStream::skip_single_frame()
        • FLAC::Decoder::File::skip_single_frame()
      • Added encoder functions for setting metadata:
        • FLAC::Encoder::Stream::set_metadata(FLAC::Metadata::Prototype **metadata, unsigned num_blocks)
        • FLAC::Encoder::SeekableStream::set_metadata(FLAC::Metadata::Prototype **metadata, unsigned num_blocks)
        • FLAC::Encoder::File::set_metadata(FLAC::Metadata::Prototype **metadata, unsigned num_blocks)
      • Added new required tell callback on seekable stream encoder:
        • pure virtual FLAC::Encoder::SeekableStream::tell_callback()
      • Changed Tell callback is now required to initialize seekable stream encoder
      • Deleted the following methods:
        • FLAC::Decoder::Stream::State::resolved_as_cstring()
        • FLAC::Encoder::Stream::State::resolved_as_cstring()
    • libOggFLAC:
      • Added OggFLAC__SeekableStreamDecoder interface
      • Added OggFLAC__FileDecoder interface
      • Added OggFLAC__SeekableStreamEncoder interface
      • Added OggFLAC__FileEncoder interface
      • Added OggFLAC__stream_decoder_get_resolved_state_string()
      • Added OggFLAC__stream_encoder_get_resolved_state_string()
      • Added OggFLAC__stream_encoder_set_metadata_callback()
      • Changed OggFLAC__StreamDecoderState by adding OggFLAC__STREAM_DECODER_END_OF_STREAM
    • libOggFLAC++:
      • Added OggFLAC::Decoder::SeekableStream interface
      • Added OggFLAC::Decoder::File interface
      • Added OggFLAC::Encoder::SeekableStream interface
      • Added OggFLAC::Encoder::File interface
      • Added OggFLAC::Decoder::Stream::get_resolved_state_string()
      • Added OggFLAC::Encoder::Stream::get_resolved_state_string()
      • Added pure virtual OggFLAC::Encoder::Stream::metadata_callback()

 Copyright (c) 2004 Josh Coalson