2004-07-23 05:08:01 +00:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- Copyright (c) 2004 Josh Coalson -->
<!-- Permission is granted to copy, distribute and/or modify this document -->
<!-- under the terms of the GNU Free Documentation License, Version 1.1 -->
<!-- or any later version published by the Free Software Foundation; -->
<!-- with no invariant sections. -->
<!-- A copy of the license can be found at http://www.gnu.org/copyleft/fdl.html -->
< HTML >
< HEAD >
< TITLE > FLAC - changelog< / TITLE >
< / HEAD >
< BODY MARGINWIDTH = "0" MARGINHEIGHT = "0" LEFTMARGIN = "0" RIGHTMARGIN = "0" TOPMARGIN = "0" BGCOLOR = "#99CC99" TEXT = "#000000" LINK = "#336699" VLINK = "#336699" ALINK = "#336699" >
< TABLE BORDER = 0 WIDTH = "100%" CELLPADDING = 1 CELLSPACING = 0 >
< TR >
< TD ALIGN = "CENTER" BGCOLOR = "#000000" > < A HREF = "http://flac.sourceforge.net/" > < IMG SRC = "images/logo130.gif" ALIGN = CENTER ALT = "FLAC Logo" BORDER = 0 HSPACE = 0 > < / a > < / TD >
< / TR >
< / TABLE >
< TABLE WIDTH = "100%" CELLPADDING = "0" CELLSPACING = "0" BORDER = "0" > < TR BGCOLOR = "#99CC99" > < TD > < IMG SRC = "images/1x1.gif" WIDTH = "1" HEIGHT = "25" ALT = "" > < / TD > < / TR > < / TABLE >
< TABLE WIDTH = "100%" CELLPADDING = "0" CELLSPACING = "0" BORDER = "0" > < TR BGCOLOR = "#000000" > < TD > < IMG SRC = "images/1x1.gif" WIDTH = "1" HEIGHT = "2" ALT = "" > < / TD > < / TR > < / TABLE >
< TABLE WIDTH = "100%" CELLPADDING = 0 CELLSPACING = 0 BORDER = 0 >
< TR >
< TD ALIGN = "CENTER" BGCOLOR = "#D3D4C5" >
< TABLE CELLPADDING = 0 CELLSPACING = 0 BORDER = 0 >
< TR >
< TD HEIGHT = 22 BGCOLOR = "#D3D4C5" ALIGN = CENTER NOWRAP > < A CLASS = "topnav" HREF = "index.html" > home< / A > < / TD > < TD BGCOLOR = "#D3D4C5" ALIGN = CENTER > |< / TD >
< TD BGCOLOR = "#D3D4C5" ALIGN = CENTER NOWRAP > < A CLASS = "topnav" HREF = "faq.html" > faq< / A > < / TD > < TD BGCOLOR = "#D3D4C5" ALIGN = CENTER > |< / TD >
< TD BGCOLOR = "#D3D4C5" ALIGN = CENTER NOWRAP > < A CLASS = "topnav" HREF = "news.html" > news< / A > < / TD > < TD BGCOLOR = "#D3D4C5" ALIGN = CENTER > |< / TD >
< TD BGCOLOR = "#D3D4C5" ALIGN = CENTER NOWRAP > < A CLASS = "topnav" HREF = "download.html" > download< / A > < / TD > < TD BGCOLOR = "#D3D4C5" ALIGN = CENTER > |< / TD >
< TD BGCOLOR = "#D3D4C5" ALIGN = CENTER NOWRAP > < A CLASS = "topnav" HREF = "features.html" > features< / A > < / TD > < TD BGCOLOR = "#D3D4C5" ALIGN = CENTER > |< / TD >
< TD BGCOLOR = "#D3D4C5" ALIGN = CENTER NOWRAP > < A CLASS = "topnav" HREF = "goals.html" > goals< / A > < / TD > < TD BGCOLOR = "#D3D4C5" ALIGN = CENTER > |< / TD >
< TD BGCOLOR = "#D3D4C5" ALIGN = CENTER NOWRAP > < A CLASS = "topnav" HREF = "format.html" > format< / A > < / TD > < TD BGCOLOR = "#D3D4C5" ALIGN = CENTER > |< / TD >
< TD BGCOLOR = "#D3D4C5" ALIGN = CENTER NOWRAP > < A CLASS = "topnav" HREF = "id.html" > id< / A > < / TD > < TD BGCOLOR = "#D3D4C5" ALIGN = CENTER > |< / TD >
< TD BGCOLOR = "#D3D4C5" ALIGN = CENTER NOWRAP > < A CLASS = "topnav" HREF = "comparison.html" > comparison< / A > < / TD > < TD BGCOLOR = "#D3D4C5" ALIGN = CENTER > |< / TD >
< TD BGCOLOR = "#D3D4C5" ALIGN = CENTER NOWRAP > < A CLASS = "topnav" HREF = "documentation.html" > documentation< / A > < / TD > < TD BGCOLOR = "#D3D4C5" ALIGN = CENTER > |< / TD >
2004-07-29 23:59:21 +00:00
< TD BGCOLOR = "#D3D4C5" ALIGN = CENTER NOWRAP > changelog < / TD > < TD BGCOLOR = "#D3D4C5" ALIGN = CENTER > |< / TD >
< TD BGCOLOR = "#D3D4C5" ALIGN = CENTER NOWRAP > < A CLASS = "topnav" HREF = "links.html" > links< / A > < / TD > < TD BGCOLOR = "#D3D4C5" ALIGN = CENTER > |< / TD >
2004-07-23 05:08:01 +00:00
< TD BGCOLOR = "#D3D4C5" ALIGN = CENTER NOWRAP > < A CLASS = "topnav" HREF = "developers.html" > developers< / A > < / TD >
< / TR >
< / TABLE >
< / TD >
< / TR >
< / TABLE >
< TABLE WIDTH = "100%" CELLPADDING = "0" CELLSPACING = "0" BORDER = "0" > < TR BGCOLOR = "#000000" > < TD > < IMG SRC = "images/1x1.gif" WIDTH = "1" HEIGHT = "2" ALT = "" > < / TD > < / TR > < / TABLE >
< TABLE WIDTH = "100%" CELLPADDING = 0 CELLSPACING = 0 BORDER = 0 >
< TR >
< TD ALIGN = "CENTER" BGCOLOR = "#EEEED4" >
< TABLE CELLPADDING = 0 CELLSPACING = 0 BORDER = 0 >
< TR >
< TD HEIGHT = 22 BGCOLOR = "#EEEED4" ALIGN = CENTER NOWRAP > english < / TD > < TD BGCOLOR = "#EEEED4" ALIGN = CENTER > |< / TD >
< TD BGCOLOR = "#EEEED4" ALIGN = CENTER NOWRAP > < A CLASS = "topnav" HREF = "ru/changelog.html" > russian< / A > < / TD >
< / TR >
< / TABLE >
< / TD >
< / TR >
< / TABLE >
< TABLE WIDTH = "100%" CELLPADDING = "0" CELLSPACING = "0" BORDER = "0" > < TR BGCOLOR = "#000000" > < TD > < IMG SRC = "images/1x1.gif" WIDTH = "1" HEIGHT = "2" ALT = "" > < / TD > < / TR > < / TABLE >
< CENTER >
< TABLE WIDTH = "100%" CELLPADDING = "0" CELLSPACING = "0" BORDER = "0" > < TR BGCOLOR = "#99CC99" > < TD > < IMG SRC = "images/1x1.gif" WIDTH = "1" HEIGHT = "15" ALT = "" > < / TD > < / TR > < / TABLE >
< TABLE WIDTH = "100%" CELLPADDING = "5" CELLSPACING = "5" BORDER = "0" >
< TR > < TD >
< TABLE WIDTH = "100%" CELLPADDING = "0" CELLSPACING = "0" BORDER = "0" > < TR BGCOLOR = "#000000" > < TD > < IMG SRC = "images/1x1.gif" WIDTH = "1" HEIGHT = "1" ALT = "" > < / TD > < / TR > < / TABLE >
< TABLE CELLSPACING = "0" CELLPADDING = "3" WIDTH = "100%" BORDER = "0" BGCOLOR = "#D3D4C5" >
< TR > < TD > < FONT FACE = "Lucida,Verdana,Helvetica,Arial" >
< B > < FONT SIZE = "+2" > changelog< / FONT > < / B >
< / FONT > < / TD > < / TR >
< / TABLE >
< TABLE WIDTH = "100%" CELLPADDING = "0" CELLSPACING = "0" BORDER = "0" > < TR BGCOLOR = "#000000" > < TD > < IMG SRC = "images/1x1.gif" WIDTH = "1" HEIGHT = "1" ALT = "" > < / TD > < / TR > < / TABLE >
< TABLE CELLSPACING = "0" CELLPADDING = "3" WIDTH = "100%" BORDER = "0" BGCOLOR = "#EEEED4" >
< TR > < TD > < FONT FACE = "Lucida,Verdana,Helvetica,Arial" >
< P >
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.
< / P >
< P >
< A NAME = "flac_1_1_1" > < B > FLAC 1.1.1< / B > < / A >
< / P >
< P >
< UL >
< LI >
General:
< UL >
2004-09-09 00:28:06 +00:00
< LI > First official FLAC-> Ogg bitstream mapping standardized (see new < A HREF = "ogg_mapping.html" > FLAC-to-Ogg mapping specification< / A > )< / LI >
2004-07-23 05:08:01 +00:00
< LI > Ogg FLAC seeking now works< / LI >
2004-07-29 23:59:21 +00:00
< LI > New PPC optimizations almost double the decoding speed on OS X< / LI >
< LI > A native OS X release thanks to updated Project Builder and autotools files< / LI >
2004-07-23 05:08:01 +00:00
< / UL >
< / LI >
< LI >
FLAC format:
< UL >
2004-07-29 23:59:21 +00:00
< LI > Made invalid the metadata block type 127 so that audio frames can always be distinguished from metadata by seeing 0xff as the first byte.< / LI >
2004-07-23 05:08:01 +00:00
< / UL >
< / LI >
< LI >
flac:
< UL >
< LI > Print an error when output file already exists instead of automatically overwriting.< / LI >
< LI > New option < A HREF = "documentation.html#flac_options_force" > < TT > -f< / TT > (< TT > --force< / TT > )< / A > to force overwriting if the output file already exists.< / LI >
< LI > New option < A HREF = "documentation.html#flac_options_cue" > < TT > --cue< / TT > < / A > to select a specific section to decode using cuesheet track/index points.< / LI >
< LI > New option < A HREF = "documentation.html#flac_options_totally_silent" > < TT > --totally-silent< / TT > < / A > to suppress all output.< / LI >
< LI > New (but undocumented) option < TT > --apply-replaygain-which-is-not-lossless< / TT > which applies ReplayGain to the decoded output. See < A HREF = "http://www.hydrogenaudio.org/forums/index.php?showtopic=17293&st=11" > this thread< / A > for usage and caveats.< / LI >
< LI > When encoding to Ogg FLAC, use a random serial number (instead of 0 as was done before) when a serial number is not specified.< / LI >
< LI > When encoding multiple Ogg FLAC streams, < TT > --serial-number< / TT > 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).< / LI >
< LI > Decoder no longer exits with an error when writing to stdout and the pipe is broken.< / LI >
< LI > Better explanation of common error messages.< / LI >
< LI > Default extension when writing AIFF files is .aif (before, it was .aiff).< / LI >
< LI > Write more common representation of SANE numbers in AIFF files.< / LI >
< LI > Bug fix: calculating ReplayGain on 48kHz streams.< / LI >
< LI > Bug fix: check for supported block alignments in WAVE files.< / LI >
< LI > Bug fix: < A HREF = "http://sourceforge.net/tracker/index.php?func=detail&aid=679166&group_id=13478&atid=113478" > #679166< / A > : flac doesn't respect RIFF subchunk padding byte.< / LI >
< LI > Bug fix: < A HREF = "http://sourceforge.net/tracker/index.php?func=detail&aid=828391&group_id=13478&atid=113478" > #828391< / A > : --add-replay-gain segfaults.< / LI >
< LI > Bug fix: < A HREF = "http://sourceforge.net/tracker/index.php?func=detail&aid=851155&group_id=13478&atid=113478" > #851155< / A > : Can't seek to position in flac file.< / LI >
< LI > Bug fix: < A HREF = "http://sourceforge.net/tracker/index.php?func=detail&aid=851756&group_id=13478&atid=113478" > #851756< / A > : flac --skip --until reads entire file.< / LI >
< LI > Bug fix: < A HREF = "http://sourceforge.net/tracker/index.php?func=detail&aid=877122&group_id=13478&atid=113478" > #877122< / A > : problem parsing cuesheet with CATALOG entry.< / LI >
< LI > Bug fix: < A HREF = "http://sourceforge.net/tracker/index.php?func=detail&aid=896057&group_id=13478&atid=113478" > #896057< / A > : parsing ISRC number from cuesheet.< / LI >
< / UL >
< / LI >
< LI >
metaflac:
< UL >
2004-09-08 01:00:09 +00:00
< LI > Renamed the tag editing options as follows (the < TT > ...-vc-...< / TT > options still work but are deprecated):
< UL >
< LI > < TT > --show-vc-vendor< / TT > becomes < TT > --show-vendor-tag< / TT > < / LI >
< LI > < TT > --show-vc-field< / TT > becomes < TT > --show-tag< / TT > < / LI >
< LI > < TT > --remove-vc-all< / TT > becomes < TT > --remove-all-tags< / TT > < / LI >
< LI > < TT > --remove-vc-field< / TT > becomes < TT > --remove-tag< / TT > < / LI >
< LI > < TT > --remove-vc-firstfield< / TT > becomes < TT > --remove-first-tag< / TT > < / LI >
< LI > < TT > --set-vc-field< / TT > becomes < TT > --set-tag< / TT > < / LI >
< LI > < TT > --import-vc-from< / TT > becomes < TT > --import-tags-from< / TT > < / LI >
< LI > < TT > --export-vc-to< / TT > becomes < TT > --export-tags-to< / TT > < / LI >
< / UL >
< / LI >
2004-07-23 05:08:01 +00:00
< LI > Better explanation of common error messages.< / LI >
< LI > Bug fix: calculating ReplayGain on 48kHz streams.< / LI >
< LI > Bug fix: incorrect numbers when printing seek points.< / LI >
< / UL >
< / LI >
< LI >
plugins:
< UL >
< LI > Speed optimization in ReplayGain synthesis.< / LI >
< LI > Speed optimization in XMMS playback.< / LI >
< LI > Support for big-endian architectures in XMMS plugin.< / LI >
< LI > Bug fix: make hard limiter default to off in XMMS plugin.< / LI >
< LI > Bug fix: stream length calculation bug in XMMS plugin, debian bug #200435; < A HREF = "http://sourceforge.net/mailarchive/forum.php?thread_id=2733072&forum_id=6312" > see also< / A > .< / LI >
< LI > Bug fix: small memory leak in XMMS plugin.< / LI >
< / UL >
< / LI >
< LI >
build system:
< UL >
< LI > < TT > ordinals.h< / TT > is now static, not a build-generated file anymore.< / LI >
< / UL >
< / LI >
< LI >
libraries:
< UL >
2004-07-28 04:04:00 +00:00
< LI > libFLAC: PPC+Altivec optimizations of some decoder routines.< / LI >
2004-07-23 05:08:01 +00:00
< LI > 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.< / LI >
< LI > libFLAC: Bug fix: fixed seek routine where infinite loop could happen when seeking past end of stream.< / LI >
< LI > libFLAC, libFLAC++: added methods to skip single frames, useful for quickly finding frame boundaries (see interface changes below).< / LI >
< LI > libOggFLAC, libOggFLAC++: New seekable-stream and file encoder and decoder APIs to match native FLAC APIs (see interface changes below).< / LI >
< / UL >
< / LI >
< LI >
Interface changes:
< UL >
< LI >
libFLAC:
< UL >
2004-07-30 01:54:29 +00:00
< LI > < B > Added< / B > FLAC__metadata_get_tags()< / LI >
2004-07-23 05:08:01 +00:00
< LI > < B > Added< / B > callback-based versions of metadata editing functions:
< UL >
< LI > FLAC__metadata_chain_read_with_callbacks()< / LI >
< LI > FLAC__metadata_chain_write_with_callbacks()< / LI >
< LI > FLAC__metadata_chain_write_with_callbacks_and_tempfile()< / LI >
< LI > FLAC__metadata_chain_check_if_tempfile_needed()< / LI >
< / UL >
< / LI >
< LI > < B > Added< / B > decoder functions for skipping single frames, also useful for quickly finding frame boundaries:
< UL >
< LI > FLAC__stream_decoder_skip_single_frame()< / LI >
< LI > FLAC__seekable_stream_decoder_skip_single_frame()< / LI >
< LI > FLAC__file_decoder_skip_single_frame()< / LI >
< / UL >
< / LI >
< LI > < B > Added< / B > new required tell callback on seekable stream encoder:
< UL >
< LI > FLAC__SeekableStreamEncoderTellStatus and FLAC__SeekableStreamEncoderTellStatusString[]< / LI >
< LI > FLAC__SeekableStreamEncoderTellCallback< / LI >
< LI > FLAC__seekable_stream_encoder_set_tell_callback()< / LI >
< / UL >
< / LI >
< LI > < B > Changed< / B > FLAC__SeekableStreamEncoderState by adding FLAC__SEEKABLE_STREAM_ENCODER_TELL_ERROR< / LI >
< LI > < B > Changed< / B > Tell callback is now required to initialize seekable stream encoder< / LI >
< LI > < B > Deleted< / B > erroneous and unimplemented FLAC__file_decoder_process_remaining_frames()< / LI >
< / UL >
< / LI >
< LI >
libFLAC++:
< UL >
2004-07-30 01:54:29 +00:00
< LI > < B > Added< / B > FLAC::Metadata::get_tags()< / LI >
2004-07-23 05:08:01 +00:00
< LI > < B > Added< / B > decoder functions for skipping single frames, also useful for quickly finding frame boundaries:
< UL >
< LI > FLAC::Decoder::Stream::skip_single_frame()< / LI >
< LI > FLAC::Decoder::SeekableStream::skip_single_frame()< / LI >
< LI > FLAC::Decoder::File::skip_single_frame()< / LI >
< / UL >
< / LI >
< LI > < B > Added< / B > encoder functions for setting metadata:
< UL >
< LI > FLAC::Encoder::Stream::set_metadata(FLAC::Metadata::Prototype **metadata, unsigned num_blocks)< / LI >
< LI > FLAC::Encoder::SeekableStream::set_metadata(FLAC::Metadata::Prototype **metadata, unsigned num_blocks)< / LI >
< LI > FLAC::Encoder::File::set_metadata(FLAC::Metadata::Prototype **metadata, unsigned num_blocks)< / LI >
< / UL >
< / LI >
< LI > < B > Added< / B > new required tell callback on seekable stream encoder:
< UL >
< LI > pure virtual FLAC::Encoder::SeekableStream::tell_callback()< / LI >
< / UL >
< / LI >
< LI > < B > Changed< / B > Tell callback is now required to initialize seekable stream encoder< / LI >
< LI > < B > Deleted< / B > the following methods:
< UL >
< LI > FLAC::Decoder::Stream::State::resolved_as_cstring()< / LI >
< LI > FLAC::Encoder::Stream::State::resolved_as_cstring()< / LI >
< / UL >
< / LI >
< / UL >
< / LI >
< LI >
libOggFLAC:
< UL >
< LI > < B > Added< / B > OggFLAC__SeekableStreamDecoder interface< / LI >
< LI > < B > Added< / B > OggFLAC__FileDecoder interface< / LI >
< LI > < B > Added< / B > OggFLAC__SeekableStreamEncoder interface< / LI >
< LI > < B > Added< / B > OggFLAC__FileEncoder interface< / LI >
< LI > < B > Added< / B > OggFLAC__stream_decoder_get_resolved_state_string()< / LI >
< LI > < B > Added< / B > OggFLAC__stream_encoder_get_resolved_state_string()< / LI >
< LI > < B > Added< / B > OggFLAC__stream_encoder_set_metadata_callback()< / LI >
< LI > < B > Changed< / B > OggFLAC__StreamDecoderState by adding OggFLAC__STREAM_DECODER_END_OF_STREAM< / LI >
< / UL >
< / LI >
< LI >
libOggFLAC++:
< UL >
< LI > < B > Added< / B > OggFLAC::Decoder::SeekableStream interface< / LI >
< LI > < B > Added< / B > OggFLAC::Decoder::File interface< / LI >
< LI > < B > Added< / B > OggFLAC::Encoder::SeekableStream interface< / LI >
< LI > < B > Added< / B > OggFLAC::Encoder::File interface< / LI >
< LI > < B > Added< / B > OggFLAC::Decoder::Stream::get_resolved_state_string()< / LI >
< LI > < B > Added< / B > OggFLAC::Encoder::Stream::get_resolved_state_string()< / LI >
< LI > < B > Added< / B > pure virtual OggFLAC::Encoder::Stream::metadata_callback()< / LI >
< / UL >
< / LI >
< / UL >
< / LI >
< / UL >
< / P >
< / FONT >
< / TD > < / TR >
< / TABLE >
< TABLE WIDTH = "100%" CELLPADDING = "0" CELLSPACING = "0" BORDER = "0" > < TR BGCOLOR = "#000000" > < TD > < IMG SRC = "images/1x1.gif" WIDTH = "1" HEIGHT = "1" ALT = "" > < / TD > < / TR > < / TABLE >
< / TD > < / TR >
< / TABLE >
< / CENTER >
2004-07-29 23:59:21 +00:00
< P > Copyright (c) 2004 Josh Coalson< / P >
2004-07-23 05:08:01 +00:00
< / BODY >
< / HTML >