#usr/include/FLAC/ordinals.h
#usr/include/FLAC/stream_decoder.h
#usr/include/FLAC/stream_encoder.h
-#usr/lib/libFLAC++.a
#usr/lib/libFLAC++.la
#usr/lib/libFLAC++.so
usr/lib/libFLAC++.so.6
-usr/lib/libFLAC++.so.6.2.0
-#usr/lib/libFLAC.a
+usr/lib/libFLAC++.so.6.3.0
#usr/lib/libFLAC.la
#usr/lib/libFLAC.so
usr/lib/libFLAC.so.8
-usr/lib/libFLAC.so.8.2.0
+usr/lib/libFLAC.so.8.3.0
#usr/lib/pkgconfig/flac++.pc
#usr/lib/pkgconfig/flac.pc
#usr/share/aclocal/libFLAC++.m4
#usr/share/aclocal/libFLAC.m4
-#usr/share/doc/flac-1.2.1
-#usr/share/doc/flac-1.2.1/FLAC.tag
-#usr/share/doc/flac-1.2.1/html
-#usr/share/doc/flac-1.2.1/html/api
-#usr/share/doc/flac-1.2.1/html/api/+_2all_8h-source.html
-#usr/share/doc/flac-1.2.1/html/api/+_2export_8h-source.html
-#usr/share/doc/flac-1.2.1/html/api/+_2export_8h.html
-#usr/share/doc/flac-1.2.1/html/api/+_2metadata_8h-source.html
-#usr/share/doc/flac-1.2.1/html/api/+_2metadata_8h.html
-#usr/share/doc/flac-1.2.1/html/api/all_8h-source.html
-#usr/share/doc/flac-1.2.1/html/api/annotated.html
-#usr/share/doc/flac-1.2.1/html/api/assert_8h-source.html
-#usr/share/doc/flac-1.2.1/html/api/callback_8h-source.html
-#usr/share/doc/flac-1.2.1/html/api/callback_8h.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File.png
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream.png
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File.png
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream.png
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application.png
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet.png
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Iterator-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Iterator.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding.png
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture.png
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype.png
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable.png
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo.png
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown.png
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment.png
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry-members.html
-#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html
-#usr/share/doc/flac-1.2.1/html/api/classes.html
-#usr/share/doc/flac-1.2.1/html/api/decoder_8h-source.html
-#usr/share/doc/flac-1.2.1/html/api/decoder_8h.html
-#usr/share/doc/flac-1.2.1/html/api/dir_000000.html
-#usr/share/doc/flac-1.2.1/html/api/dir_000001.html
-#usr/share/doc/flac-1.2.1/html/api/dir_000002.html
-#usr/share/doc/flac-1.2.1/html/api/dirs.html
-#usr/share/doc/flac-1.2.1/html/api/doxygen.css
-#usr/share/doc/flac-1.2.1/html/api/doxygen.png
-#usr/share/doc/flac-1.2.1/html/api/encoder_8h-source.html
-#usr/share/doc/flac-1.2.1/html/api/encoder_8h.html
-#usr/share/doc/flac-1.2.1/html/api/export_8h-source.html
-#usr/share/doc/flac-1.2.1/html/api/export_8h.html
-#usr/share/doc/flac-1.2.1/html/api/files.html
-#usr/share/doc/flac-1.2.1/html/api/format_8h-source.html
-#usr/share/doc/flac-1.2.1/html/api/format_8h.html
-#usr/share/doc/flac-1.2.1/html/api/functions.html
-#usr/share/doc/flac-1.2.1/html/api/functions_func.html
-#usr/share/doc/flac-1.2.1/html/api/functions_vars.html
-#usr/share/doc/flac-1.2.1/html/api/globals.html
-#usr/share/doc/flac-1.2.1/html/api/globals_0x66.html
-#usr/share/doc/flac-1.2.1/html/api/globals_0x67.html
-#usr/share/doc/flac-1.2.1/html/api/globals_defs.html
-#usr/share/doc/flac-1.2.1/html/api/globals_enum.html
-#usr/share/doc/flac-1.2.1/html/api/globals_eval.html
-#usr/share/doc/flac-1.2.1/html/api/globals_func.html
-#usr/share/doc/flac-1.2.1/html/api/globals_type.html
-#usr/share/doc/flac-1.2.1/html/api/globals_vars.html
-#usr/share/doc/flac-1.2.1/html/api/group__flac.html
-#usr/share/doc/flac-1.2.1/html/api/group__flac__callbacks.html
-#usr/share/doc/flac-1.2.1/html/api/group__flac__decoder.html
-#usr/share/doc/flac-1.2.1/html/api/group__flac__encoder.html
-#usr/share/doc/flac-1.2.1/html/api/group__flac__export.html
-#usr/share/doc/flac-1.2.1/html/api/group__flac__format.html
-#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata.html
-#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level0.html
-#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level1.html
-#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level2.html
-#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__object.html
-#usr/share/doc/flac-1.2.1/html/api/group__flac__stream__decoder.html
-#usr/share/doc/flac-1.2.1/html/api/group__flac__stream__encoder.html
-#usr/share/doc/flac-1.2.1/html/api/group__flacpp.html
-#usr/share/doc/flac-1.2.1/html/api/group__flacpp__decoder.html
-#usr/share/doc/flac-1.2.1/html/api/group__flacpp__encoder.html
-#usr/share/doc/flac-1.2.1/html/api/group__flacpp__export.html
-#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata.html
-#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level0.html
-#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level1.html
-#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level2.html
-#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__object.html
-#usr/share/doc/flac-1.2.1/html/api/group__porting.html
-#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__2__to__1__1__3.html
-#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__3__to__1__1__4.html
-#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__4__to__1__2__0.html
-#usr/share/doc/flac-1.2.1/html/api/hierarchy.html
-#usr/share/doc/flac-1.2.1/html/api/index.html
-#usr/share/doc/flac-1.2.1/html/api/metadata_8h-source.html
-#usr/share/doc/flac-1.2.1/html/api/metadata_8h.html
-#usr/share/doc/flac-1.2.1/html/api/modules.html
-#usr/share/doc/flac-1.2.1/html/api/ordinals_8h-source.html
-#usr/share/doc/flac-1.2.1/html/api/stream__decoder_8h-source.html
-#usr/share/doc/flac-1.2.1/html/api/stream__decoder_8h.html
-#usr/share/doc/flac-1.2.1/html/api/stream__encoder_8h-source.html
-#usr/share/doc/flac-1.2.1/html/api/stream__encoder_8h.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRice-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRice.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____Frame-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____Frame.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameFooter-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameFooter.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameHeader-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameHeader.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____IOCallbacks-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____IOCallbacks.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamDecoder-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamDecoder.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamEncoder-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamEncoder.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Application-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Application.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Index-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Index.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Track-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Track.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Padding-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Padding.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Picture-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Picture.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekPoint-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekPoint.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekTable-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekTable.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__StreamInfo-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__StreamInfo.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Unknown-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Unknown.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment__Entry-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment__Entry.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Constant-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Constant.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Fixed-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Fixed.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__LPC-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__LPC.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Verbatim-members.html
-#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Verbatim.html
-#usr/share/doc/flac-1.2.1/html/changelog.html
-#usr/share/doc/flac-1.2.1/html/comparison.html
-#usr/share/doc/flac-1.2.1/html/comparison__chopin_prelude_24.html
-#usr/share/doc/flac-1.2.1/html/comparison__dream_theater_600.html
-#usr/share/doc/flac-1.2.1/html/comparison__eddie_warner_titus.html
-#usr/share/doc/flac-1.2.1/html/comparison__fanfare_de_l_eventail_de_jeanne.html
-#usr/share/doc/flac-1.2.1/html/comparison__gloria_estefan_conga.html
-#usr/share/doc/flac-1.2.1/html/comparison__hand_in_my_pocket.html
-#usr/share/doc/flac-1.2.1/html/comparison__l_sub_raga_sivapriya.html
-#usr/share/doc/flac-1.2.1/html/comparison__laetatus_sum.html
-#usr/share/doc/flac-1.2.1/html/comparison__mummified_in_barbed_wire.html
-#usr/share/doc/flac-1.2.1/html/comparison__prokofiev_pcon3_3.html
-#usr/share/doc/flac-1.2.1/html/comparison__ravel_sq4_4.html
-#usr/share/doc/flac-1.2.1/html/comparison__scarlatti_k42.html
-#usr/share/doc/flac-1.2.1/html/comparison__tool_forty_six_and_2.html
-#usr/share/doc/flac-1.2.1/html/comparison__white_room.html
-#usr/share/doc/flac-1.2.1/html/comparison_all_cpudectime.html
-#usr/share/doc/flac-1.2.1/html/comparison_all_cpuenctime.html
-#usr/share/doc/flac-1.2.1/html/comparison_all_procdectime.html
-#usr/share/doc/flac-1.2.1/html/comparison_all_procenctime.html
-#usr/share/doc/flac-1.2.1/html/comparison_all_ratio.html
-#usr/share/doc/flac-1.2.1/html/developers.html
-#usr/share/doc/flac-1.2.1/html/documentation.html
-#usr/share/doc/flac-1.2.1/html/documentation_bugs.html
-#usr/share/doc/flac-1.2.1/html/documentation_example_code.html
-#usr/share/doc/flac-1.2.1/html/documentation_format_overview.html
-#usr/share/doc/flac-1.2.1/html/documentation_tasks.html
-#usr/share/doc/flac-1.2.1/html/documentation_tools.html
-#usr/share/doc/flac-1.2.1/html/documentation_tools_flac.html
-#usr/share/doc/flac-1.2.1/html/documentation_tools_metaflac.html
-#usr/share/doc/flac-1.2.1/html/documentation_tools_plugins.html
-#usr/share/doc/flac-1.2.1/html/download.html
-#usr/share/doc/flac-1.2.1/html/faq.html
-#usr/share/doc/flac-1.2.1/html/favicon.ico
-#usr/share/doc/flac-1.2.1/html/features.html
-#usr/share/doc/flac-1.2.1/html/flac.css
-#usr/share/doc/flac-1.2.1/html/format.html
-#usr/share/doc/flac-1.2.1/html/id.html
-#usr/share/doc/flac-1.2.1/html/images
-#usr/share/doc/flac-1.2.1/html/images/1x1.gif
-#usr/share/doc/flac-1.2.1/html/images/cafebug.gif
-#usr/share/doc/flac-1.2.1/html/images/hw
-#usr/share/doc/flac-1.2.1/html/images/hw/Blackbird_Front_low3_325x87.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/MS300frontsmall_270x108.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/MediaBox_Frt_170x325.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/SB_Hero_Black_325x182.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/Sooloos-ControlOne_325x328.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/Z500_front_325x94.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/a2_01_325x252.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/arcus_325x135.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/bmp-1430_325x241.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/cs505_front_lrg_325x113.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/enus_3-4lft-hires_product_eva8000_325x127.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/escient_ProductLine_325x163.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/hifidelio_bl_front_Z_RGB_325x163.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/i-station-mini-dx_325x237.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/iwod-g10_325x257.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/knc_hr-2800_325x209.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/mediaready_prodmain_MRMCa_325x232.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/meizu_m6_325x206.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/musica_artwork_325x90.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/neodigits_x5000_325x124.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/onda-vx737_325x240.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/request_n_front_325x103.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/rio_karma_279x254.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/sonos_family_RGB_325x200.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/teclast-tl29_325x244.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/transporter_hero_grey_325x208.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/tvix-4000_325x204.jpg
-#usr/share/doc/flac-1.2.1/html/images/hw/vibez_nofm_combi_black_b_325x220.jpg
-#usr/share/doc/flac-1.2.1/html/images/logo100.gif
-#usr/share/doc/flac-1.2.1/html/images/logo130.gif
-#usr/share/doc/flac-1.2.1/html/index.html
-#usr/share/doc/flac-1.2.1/html/itunes.html
-#usr/share/doc/flac-1.2.1/html/license.html
-#usr/share/doc/flac-1.2.1/html/links.html
-#usr/share/doc/flac-1.2.1/html/news.html
-#usr/share/doc/flac-1.2.1/html/ogg_mapping.html
-#usr/share/doc/flac-1.2.1/html/ru
-#usr/share/doc/flac-1.2.1/html/ru/authors.html
-#usr/share/doc/flac-1.2.1/html/ru/comparison.html
-#usr/share/doc/flac-1.2.1/html/ru/developers.html
-#usr/share/doc/flac-1.2.1/html/ru/documentation.html
-#usr/share/doc/flac-1.2.1/html/ru/download.html
-#usr/share/doc/flac-1.2.1/html/ru/features.html
-#usr/share/doc/flac-1.2.1/html/ru/format.html
-#usr/share/doc/flac-1.2.1/html/ru/goals.html
-#usr/share/doc/flac-1.2.1/html/ru/id.html
-#usr/share/doc/flac-1.2.1/html/ru/index.html
-#usr/share/doc/flac-1.2.1/html/ru/links.html
-#usr/share/doc/flac-1.2.1/html/ru/news.html
+#usr/share/doc/flac-1.3.2
+#usr/share/doc/flac-1.3.2/FLAC.tag
+#usr/share/doc/flac-1.3.2/html
+#usr/share/doc/flac-1.3.2/html/changelog.html
+#usr/share/doc/flac-1.3.2/html/developers.html
+#usr/share/doc/flac-1.3.2/html/documentation.html
+#usr/share/doc/flac-1.3.2/html/documentation_bugs.html
+#usr/share/doc/flac-1.3.2/html/documentation_example_code.html
+#usr/share/doc/flac-1.3.2/html/documentation_format_overview.html
+#usr/share/doc/flac-1.3.2/html/documentation_tools.html
+#usr/share/doc/flac-1.3.2/html/documentation_tools_flac.html
+#usr/share/doc/flac-1.3.2/html/documentation_tools_metaflac.html
+#usr/share/doc/flac-1.3.2/html/faq.html
+#usr/share/doc/flac-1.3.2/html/favicon.ico
+#usr/share/doc/flac-1.3.2/html/features.html
+#usr/share/doc/flac-1.3.2/html/flac.css
+#usr/share/doc/flac-1.3.2/html/format.html
+#usr/share/doc/flac-1.3.2/html/id.html
+#usr/share/doc/flac-1.3.2/html/images
+#usr/share/doc/flac-1.3.2/html/images/logo.svg
+#usr/share/doc/flac-1.3.2/html/images/logo130.gif
+#usr/share/doc/flac-1.3.2/html/index.html
+#usr/share/doc/flac-1.3.2/html/license.html
+#usr/share/doc/flac-1.3.2/html/ogg_mapping.html
#usr/share/man/man1/flac.1
#usr/share/man/man1/metaflac.1
include Config
-VER = 1.2.1
+VER = 1.3.2
THISAPP = flac-$(VER)
-DL_FILE = $(THISAPP).tar.gz
+DL_FILE = $(THISAPP).tar.xz
DL_FROM = $(URL_IPFIRE)
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
PROG = flac
-PAK_VER = 1
+PAK_VER = 2
DEPS = "libogg"
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 153c8b15a54da428d1f0fadc756c22c7
+$(DL_FILE)_MD5 = 454f1bfa3f93cc708098d7890d0499bd
install : $(TARGET)
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-asm.patch
- cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/flac-1.2.1-bitreader.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-cflags.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-gcc43.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-hidesyms.patch
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-tests.patch
- cd $(DIR_APP) && ./autogen.sh -V
cd $(DIR_APP) && \
./configure \
--prefix=/usr \
--disable-xmms-plugin \
--disable-thorough-tests
- cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+ cd $(DIR_APP) && make $(MAKETUNING)
cd $(DIR_APP) && make install
@rm -rf $(DIR_APP)
@$(POSTBUILD)
+++ /dev/null
-diff -up flac-1.2.1/src/libFLAC/stream_decoder.c.asm flac-1.2.1/src/libFLAC/stream_decoder.c
---- flac-1.2.1/src/libFLAC/stream_decoder.c.asm 2007-09-13 17:38:05.000000000 +0200
-+++ flac-1.2.1/src/libFLAC/stream_decoder.c 2008-01-29 10:32:17.000000000 +0100
-@@ -421,7 +421,7 @@ static FLAC__StreamDecoderInitStatus ini
- #ifdef FLAC__CPU_IA32
- FLAC__ASSERT(decoder->private_->cpuinfo.type == FLAC__CPUINFO_TYPE_IA32);
- #ifdef FLAC__HAS_NASM
--#if 1 /*@@@@@@ OPT: not clearly faster, needs more testing */
-+#if 0 /*@@@@@@ OPT: not clearly faster, needs more testing */
- if(decoder->private_->cpuinfo.data.ia32.bswap)
- decoder->private_->local_bitreader_read_rice_signed_block = FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap;
- #endif
-diff -up flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm
---- flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100
-+++ flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm 2008-01-29 10:34:09.000000000 +0100
-@@ -1507,5 +1507,5 @@ cident FLAC__lpc_restore_signal_asm_ia32
- end
-
- %ifdef OBJ_FORMAT_elf
-- section .note.GNU-stack noalloc
-+ section .note.GNU-stack progbits noalloc noexec nowrite align=1
- %endif
-diff -up flac-1.2.1/src/libFLAC/ia32/Makefile.am.asm flac-1.2.1/src/libFLAC/ia32/Makefile.am
---- flac-1.2.1/src/libFLAC/ia32/Makefile.am.asm 2007-04-04 02:01:13.000000000 +0200
-+++ flac-1.2.1/src/libFLAC/ia32/Makefile.am 2008-03-17 14:04:37.000000000 +0100
-@@ -37,7 +37,6 @@ STRIP_NON_ASM = sh $(top_srcdir)/strip_n
-
- noinst_LTLIBRARIES = libFLAC-asm.la
- libFLAC_asm_la_SOURCES = \
-- bitreader_asm.nasm \
- cpu_asm.nasm \
- fixed_asm.nasm \
- lpc_asm.nasm \
-diff -up flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm
---- flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm.asm 2007-03-30 02:54:53.000000000 +0200
-+++ flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm 2008-01-29 10:32:57.000000000 +0100
-@@ -564,5 +564,5 @@ cident FLAC__bitreader_read_rice_signed_
- end
-
- %ifdef OBJ_FORMAT_elf
-- section .note.GNU-stack noalloc
-+ section .note.GNU-stack progbits noalloc noexec nowrite align=1
- %endif
-diff -up flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm
---- flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100
-+++ flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm 2008-01-29 10:33:52.000000000 +0100
-@@ -308,5 +308,5 @@ cident FLAC__fixed_compute_best_predicto
- end
-
- %ifdef OBJ_FORMAT_elf
-- section .note.GNU-stack noalloc
-+ section .note.GNU-stack progbits noalloc noexec nowrite align=1
- %endif
-diff -up flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm
---- flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100
-+++ flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm 2008-01-29 10:33:24.000000000 +0100
-@@ -117,5 +117,5 @@ cident FLAC__cpu_info_extended_amd_asm_i
- end
-
- %ifdef OBJ_FORMAT_elf
-- section .note.GNU-stack noalloc
-+ section .note.GNU-stack progbits noalloc noexec nowrite align=1
- %endif
-diff -up flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm
---- flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.asm 2007-06-19 22:01:27.000000000 +0200
-+++ flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm 2008-01-29 10:34:40.000000000 +0100
-@@ -155,5 +155,5 @@ cident precompute_partition_info_sums_32
- end
-
- %ifdef OBJ_FORMAT_elf
-- section .note.GNU-stack noalloc
-+ section .note.GNU-stack progbits noalloc noexec nowrite align=1
- %endif
+++ /dev/null
-Index: src/libFLAC/bitreader.c
-===================================================================
-RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v
-retrieving revision 1.15
-diff -u -r1.15 bitreader.c
---- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15
-+++ src/libFLAC/bitreader.c 14 Mar 2008 11:07:07 -0000
-@@ -69,13 +69,12 @@
- #endif
- /* counts the # of zero MSBs in a word */
- #define COUNT_ZERO_MSBS(word) ( \
-- (word) <= 0xffff ? \
-- ( (word) <= 0xff? byte_to_unary_table[word] + 24 : byte_to_unary_table[(word) >> 8] + 16 ) : \
-- ( (word) <= 0xffffff? byte_to_unary_table[word >> 16] + 8 : byte_to_unary_table[(word) >> 24] ) \
-+ word > 0xffffff ? byte_to_unary_table[(word) >> 24] : \
-+ !word ? 32 : \
-+ word > 0xffff ? byte_to_unary_table[word >> 16] + 8 : \
-+ word > 0xff ? byte_to_unary_table[(word) >> 8] + 16 : \
-+ byte_to_unary_table[word] + 24 \
- )
--/* this alternate might be slightly faster on some systems/compilers: */
--#define COUNT_ZERO_MSBS2(word) ( (word) <= 0xff ? byte_to_unary_table[word] + 24 : ((word) <= 0xffff ? byte_to_unary_table[(word) >> 8] + 16 : ((word) <= 0xffffff ? byte_to_unary_table[(word) >> 16] + 8 : byte_to_unary_table[(word) >> 24])) )
--
-
- /*
- * This should be at least twice as large as the largest number of words
-Index: src/libFLAC/bitreader.c
-===================================================================
-RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v
-retrieving revision 1.15
-diff -u -r1.15 bitreader.c
---- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15
-+++ src/libFLAC/bitreader.c 14 Mar 2008 13:19:46 -0000
-@@ -149,6 +148,7 @@
- FLAC__CPUInfo cpu_info;
- };
-
-+#if FLAC__BYTES_PER_WORD == 4 && FLAC__CPU_IA32
- #ifdef _MSC_VER
- /* OPT: an MSVC built-in would be better */
- static _inline FLAC__uint32 local_swap32_(FLAC__uint32 x)
-@@ -173,6 +173,15 @@
- done1:
- }
- }
-+#elif __GNUC__
-+static void local_swap32_block_(FLAC__uint32 *start, FLAC__uint32 len)
-+{
-+ FLAC__uint32 *end;
-+
-+ for(end = start + len; start < end; start++)
-+ asm ("bswap %0" : "=r"(*start) : "0"(*start));
-+}
-+#endif
- #endif
-
- static FLaC__INLINE void crc16_update_word_(FLAC__BitReader *br, brword word)
-@@ -263,7 +272,7 @@
- #if WORDS_BIGENDIAN
- #else
- end = (br->words*FLAC__BYTES_PER_WORD + br->bytes + bytes + (FLAC__BYTES_PER_WORD-1)) / FLAC__BYTES_PER_WORD;
--# if defined(_MSC_VER) && (FLAC__BYTES_PER_WORD == 4)
-+# if FLAC__CPU_IA32 && (__GNUC__ || defined(_MSC_VER)) && FLAC__BYTES_PER_WORD == 4
- if(br->cpu_info.type == FLAC__CPUINFO_TYPE_IA32 && br->cpu_info.data.ia32.bswap) {
- start = br->words;
- local_swap32_block_(br->buffer + start, end - start);
-Index: src/libFLAC/bitreader.c
-===================================================================
-RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v
-retrieving revision 1.15
-diff -u -r1.15 bitreader.c
---- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15
-+++ src/libFLAC/bitreader.c 17 Mar 2008 15:42:57 -0000
-@@ -803,379 +812,144 @@
- }
-
- /* this is by far the most heavily used reader call. it ain't pretty but it's fast */
--/* a lot of the logic is copied, then adapted, from FLAC__bitreader_read_unary_unsigned() and FLAC__bitreader_read_raw_uint32() */
- FLAC__bool FLAC__bitreader_read_rice_signed_block(FLAC__BitReader *br, int vals[], unsigned nvals, unsigned parameter)
--/* OPT: possibly faster version for use with MSVC */
--#ifdef _MSC_VER
- {
-- unsigned i;
-- unsigned uval = 0;
-- unsigned bits; /* the # of binary LSBs left to read to finish a rice codeword */
--
- /* try and get br->consumed_words and br->consumed_bits into register;
- * must remember to flush them back to *br before calling other
-- * bitwriter functions that use them, and before returning */
-- register unsigned cwords;
-- register unsigned cbits;
-+ * bitreader functions that use them, and before returning */
-+ unsigned cwords, words, lsbs, msbs, x, y;
-+ unsigned ucbits; /* keep track of the number of unconsumed bits in word */
-+ brword b;
-+ int *val, *end;
-
- FLAC__ASSERT(0 != br);
- FLAC__ASSERT(0 != br->buffer);
- /* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */
- FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32);
- FLAC__ASSERT(parameter < 32);
-- /* the above two asserts also guarantee that the binary part never straddles more that 2 words, so we don't have to loop to read it */
--
-- if(nvals == 0)
-- return true;
--
-- cbits = br->consumed_bits;
-- cwords = br->consumed_words;
-+ /* the above two asserts also guarantee that the binary part never straddles more than 2 words, so we don't have to loop to read it */
-
-- while(1) {
-+ val = vals;
-+ end = vals + nvals;
-
-- /* read unary part */
-- while(1) {
-- while(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
-- brword b = br->buffer[cwords] << cbits;
-- if(b) {
--#if 0 /* slower, probably due to bad register allocation... */ && defined FLAC__CPU_IA32 && !defined FLAC__NO_ASM && FLAC__BITS_PER_WORD == 32
-- __asm {
-- bsr eax, b
-- not eax
-- and eax, 31
-- mov i, eax
-- }
--#else
-- i = COUNT_ZERO_MSBS(b);
--#endif
-- uval += i;
-- bits = parameter;
-- i++;
-- cbits += i;
-- if(cbits == FLAC__BITS_PER_WORD) {
-- crc16_update_word_(br, br->buffer[cwords]);
-- cwords++;
-- cbits = 0;
-- }
-- goto break1;
-- }
-- else {
-- uval += FLAC__BITS_PER_WORD - cbits;
-- crc16_update_word_(br, br->buffer[cwords]);
-- cwords++;
-- cbits = 0;
-- /* didn't find stop bit yet, have to keep going... */
-- }
-- }
-- /* at this point we've eaten up all the whole words; have to try
-- * reading through any tail bytes before calling the read callback.
-- * this is a repeat of the above logic adjusted for the fact we
-- * don't have a whole word. note though if the client is feeding
-- * us data a byte at a time (unlikely), br->consumed_bits may not
-- * be zero.
-- */
-- if(br->bytes) {
-- const unsigned end = br->bytes * 8;
-- brword b = (br->buffer[cwords] & (FLAC__WORD_ALL_ONES << (FLAC__BITS_PER_WORD-end))) << cbits;
-- if(b) {
-- i = COUNT_ZERO_MSBS(b);
-- uval += i;
-- bits = parameter;
-- i++;
-- cbits += i;
-- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
-- goto break1;
-- }
-- else {
-- uval += end - cbits;
-- cbits += end;
-- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
-- /* didn't find stop bit yet, have to keep going... */
-- }
-- }
-- /* flush registers and read; bitreader_read_from_client_() does
-- * not touch br->consumed_bits at all but we still need to set
-- * it in case it fails and we have to return false.
-- */
-- br->consumed_bits = cbits;
-- br->consumed_words = cwords;
-- if(!bitreader_read_from_client_(br))
-+ if(parameter == 0) {
-+ while(val < end) {
-+ /* read the unary MSBs and end bit */
-+ if(!FLAC__bitreader_read_unary_unsigned(br, &msbs))
- return false;
-- cwords = br->consumed_words;
-- }
--break1:
-- /* read binary part */
-- FLAC__ASSERT(cwords <= br->words);
--
-- if(bits) {
-- while((br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits < bits) {
-- /* flush registers and read; bitreader_read_from_client_() does
-- * not touch br->consumed_bits at all but we still need to set
-- * it in case it fails and we have to return false.
-- */
-- br->consumed_bits = cbits;
-- br->consumed_words = cwords;
-- if(!bitreader_read_from_client_(br))
-- return false;
-- cwords = br->consumed_words;
-- }
-- if(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
-- if(cbits) {
-- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
-- const unsigned n = FLAC__BITS_PER_WORD - cbits;
-- const brword word = br->buffer[cwords];
-- if(bits < n) {
-- uval <<= bits;
-- uval |= (word & (FLAC__WORD_ALL_ONES >> cbits)) >> (n-bits);
-- cbits += bits;
-- goto break2;
-- }
-- uval <<= n;
-- uval |= word & (FLAC__WORD_ALL_ONES >> cbits);
-- bits -= n;
-- crc16_update_word_(br, word);
-- cwords++;
-- cbits = 0;
-- if(bits) { /* if there are still bits left to read, there have to be less than 32 so they will all be in the next word */
-- uval <<= bits;
-- uval |= (br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits));
-- cbits = bits;
-- }
-- goto break2;
-- }
-- else {
-- FLAC__ASSERT(bits < FLAC__BITS_PER_WORD);
-- uval <<= bits;
-- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits);
-- cbits = bits;
-- goto break2;
-- }
-- }
-- else {
-- /* in this case we're starting our read at a partial tail word;
-- * the reader has guaranteed that we have at least 'bits' bits
-- * available to read, which makes this case simpler.
-- */
-- uval <<= bits;
-- if(cbits) {
-- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
-- FLAC__ASSERT(cbits + bits <= br->bytes*8);
-- uval |= (br->buffer[cwords] & (FLAC__WORD_ALL_ONES >> cbits)) >> (FLAC__BITS_PER_WORD-cbits-bits);
-- cbits += bits;
-- goto break2;
-- }
-- else {
-- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits);
-- cbits += bits;
-- goto break2;
-- }
-- }
-- }
--break2:
-- /* compose the value */
-- *vals = (int)(uval >> 1 ^ -(int)(uval & 1));
-
-- /* are we done? */
-- --nvals;
-- if(nvals == 0) {
-- br->consumed_bits = cbits;
-- br->consumed_words = cwords;
-- return true;
-+ *val++ = (int)(msbs >> 1) ^ -(int)(msbs & 1);
- }
-
-- uval = 0;
-- ++vals;
--
-+ return true;
- }
--}
--#else
--{
-- unsigned i;
-- unsigned uval = 0;
-
-- /* try and get br->consumed_words and br->consumed_bits into register;
-- * must remember to flush them back to *br before calling other
-- * bitwriter functions that use them, and before returning */
-- register unsigned cwords;
-- register unsigned cbits;
-- unsigned ucbits; /* keep track of the number of unconsumed bits in the buffer */
-+ FLAC__ASSERT(parameter > 0);
-
-- FLAC__ASSERT(0 != br);
-- FLAC__ASSERT(0 != br->buffer);
-- /* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */
-- FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32);
-- FLAC__ASSERT(parameter < 32);
-- /* the above two asserts also guarantee that the binary part never straddles more than 2 words, so we don't have to loop to read it */
-+ cwords = br->consumed_words;
-+ words = br->words;
-
-- if(nvals == 0)
-- return true;
-+ /* if we've not consumed up to a partial tail word... */
-+ if(cwords >= words) {
-+ x = 0;
-+ goto process_tail;
-+ }
-+
-+ ucbits = FLAC__BITS_PER_WORD - br->consumed_bits;
-+ b = br->buffer[cwords] << br->consumed_bits; /* keep unconsumed bits aligned to left */
-+
-+ while(val < end) {
-+ /* read the unary MSBs and end bit */
-+ x = y = COUNT_ZERO_MSBS(b);
-+ if(x == FLAC__BITS_PER_WORD) {
-+ x = ucbits;
-+ do {
-+ /* didn't find stop bit yet, have to keep going... */
-+ crc16_update_word_(br, br->buffer[cwords++]);
-+ if (cwords >= words)
-+ goto incomplete_msbs;
-+ b = br->buffer[cwords];
-+ y = COUNT_ZERO_MSBS(b);
-+ x += y;
-+ } while(y == FLAC__BITS_PER_WORD);
-+ }
-+ b <<= y;
-+ b <<= 1; /* account for stop bit */
-+ ucbits = (ucbits - x - 1) % FLAC__BITS_PER_WORD;
-+ msbs = x;
-+
-+ /* read the binary LSBs */
-+ x = b >> (FLAC__BITS_PER_WORD - parameter);
-+ if(parameter <= ucbits) {
-+ ucbits -= parameter;
-+ b <<= parameter;
-+ } else {
-+ /* there are still bits left to read, they will all be in the next word */
-+ crc16_update_word_(br, br->buffer[cwords++]);
-+ if (cwords >= words)
-+ goto incomplete_lsbs;
-+ b = br->buffer[cwords];
-+ ucbits += FLAC__BITS_PER_WORD - parameter;
-+ x |= b >> ucbits;
-+ b <<= FLAC__BITS_PER_WORD - ucbits;
-+ }
-+ lsbs = x;
-
-- cbits = br->consumed_bits;
-- cwords = br->consumed_words;
-- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits;
-+ /* compose the value */
-+ x = (msbs << parameter) | lsbs;
-+ *val++ = (int)(x >> 1) ^ -(int)(x & 1);
-
-- while(1) {
-+ continue;
-
-- /* read unary part */
-- while(1) {
-- while(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
-- brword b = br->buffer[cwords] << cbits;
-- if(b) {
--#if 0 /* is not discernably faster... */ && defined FLAC__CPU_IA32 && !defined FLAC__NO_ASM && FLAC__BITS_PER_WORD == 32 && defined __GNUC__
-- asm volatile (
-- "bsrl %1, %0;"
-- "notl %0;"
-- "andl $31, %0;"
-- : "=r"(i)
-- : "r"(b)
-- );
--#else
-- i = COUNT_ZERO_MSBS(b);
--#endif
-- uval += i;
-- cbits += i;
-- cbits++; /* skip over stop bit */
-- if(cbits >= FLAC__BITS_PER_WORD) { /* faster way of testing if(cbits == FLAC__BITS_PER_WORD) */
-- crc16_update_word_(br, br->buffer[cwords]);
-- cwords++;
-- cbits = 0;
-- }
-- goto break1;
-- }
-- else {
-- uval += FLAC__BITS_PER_WORD - cbits;
-- crc16_update_word_(br, br->buffer[cwords]);
-- cwords++;
-- cbits = 0;
-- /* didn't find stop bit yet, have to keep going... */
-- }
-- }
-- /* at this point we've eaten up all the whole words; have to try
-- * reading through any tail bytes before calling the read callback.
-- * this is a repeat of the above logic adjusted for the fact we
-- * don't have a whole word. note though if the client is feeding
-- * us data a byte at a time (unlikely), br->consumed_bits may not
-- * be zero.
-- */
-- if(br->bytes) {
-- const unsigned end = br->bytes * 8;
-- brword b = (br->buffer[cwords] & ~(FLAC__WORD_ALL_ONES >> end)) << cbits;
-- if(b) {
-- i = COUNT_ZERO_MSBS(b);
-- uval += i;
-- cbits += i;
-- cbits++; /* skip over stop bit */
-- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
-- goto break1;
-- }
-- else {
-- uval += end - cbits;
-- cbits += end;
-- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
-- /* didn't find stop bit yet, have to keep going... */
-- }
-+ /* at this point we've eaten up all the whole words */
-+process_tail:
-+ do {
-+ if(0) {
-+incomplete_msbs:
-+ br->consumed_bits = 0;
-+ br->consumed_words = cwords;
- }
-- /* flush registers and read; bitreader_read_from_client_() does
-- * not touch br->consumed_bits at all but we still need to set
-- * it in case it fails and we have to return false.
-- */
-- br->consumed_bits = cbits;
-- br->consumed_words = cwords;
-- if(!bitreader_read_from_client_(br))
-+
-+ /* read the unary MSBs and end bit */
-+ if(!FLAC__bitreader_read_unary_unsigned(br, &msbs))
- return false;
-- cwords = br->consumed_words;
-- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits + uval;
-- /* + uval to offset our count by the # of unary bits already
-- * consumed before the read, because we will add these back
-- * in all at once at break1
-- */
-- }
--break1:
-- ucbits -= uval;
-- ucbits--; /* account for stop bit */
--
-- /* read binary part */
-- FLAC__ASSERT(cwords <= br->words);
--
-- if(parameter) {
-- while(ucbits < parameter) {
-- /* flush registers and read; bitreader_read_from_client_() does
-- * not touch br->consumed_bits at all but we still need to set
-- * it in case it fails and we have to return false.
-- */
-- br->consumed_bits = cbits;
-+ msbs += x;
-+ x = ucbits = 0;
-+
-+ if(0) {
-+incomplete_lsbs:
-+ br->consumed_bits = 0;
- br->consumed_words = cwords;
-- if(!bitreader_read_from_client_(br))
-- return false;
-- cwords = br->consumed_words;
-- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits;
-- }
-- if(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
-- if(cbits) {
-- /* this also works when consumed_bits==0, it's just slower than necessary for that case */
-- const unsigned n = FLAC__BITS_PER_WORD - cbits;
-- const brword word = br->buffer[cwords];
-- if(parameter < n) {
-- uval <<= parameter;
-- uval |= (word & (FLAC__WORD_ALL_ONES >> cbits)) >> (n-parameter);
-- cbits += parameter;
-- }
-- else {
-- uval <<= n;
-- uval |= word & (FLAC__WORD_ALL_ONES >> cbits);
-- crc16_update_word_(br, word);
-- cwords++;
-- cbits = parameter - n;
-- if(cbits) { /* parameter > n, i.e. if there are still bits left to read, there have to be less than 32 so they will all be in the next word */
-- uval <<= cbits;
-- uval |= (br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits));
-- }
-- }
-- }
-- else {
-- cbits = parameter;
-- uval <<= parameter;
-- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits);
-- }
- }
-- else {
-- /* in this case we're starting our read at a partial tail word;
-- * the reader has guaranteed that we have at least 'parameter'
-- * bits available to read, which makes this case simpler.
-- */
-- uval <<= parameter;
-- if(cbits) {
-- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
-- FLAC__ASSERT(cbits + parameter <= br->bytes*8);
-- uval |= (br->buffer[cwords] & (FLAC__WORD_ALL_ONES >> cbits)) >> (FLAC__BITS_PER_WORD-cbits-parameter);
-- cbits += parameter;
-- }
-- else {
-- cbits = parameter;
-- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits);
-- }
-- }
-- }
-
-- ucbits -= parameter;
--
-- /* compose the value */
-- *vals = (int)(uval >> 1 ^ -(int)(uval & 1));
-+ /* read the binary LSBs */
-+ if(!FLAC__bitreader_read_raw_uint32(br, &lsbs, parameter - ucbits))
-+ return false;
-+ lsbs = x | lsbs;
-
-- /* are we done? */
-- --nvals;
-- if(nvals == 0) {
-- br->consumed_bits = cbits;
-- br->consumed_words = cwords;
-- return true;
-- }
-+ /* compose the value */
-+ x = (msbs << parameter) | lsbs;
-+ *val++ = (int)(x >> 1) ^ -(int)(x & 1);
-+ x = 0;
-
-- uval = 0;
-- ++vals;
-+ cwords = br->consumed_words;
-+ words = br->words;
-+ ucbits = FLAC__BITS_PER_WORD - br->consumed_bits;
-+ b = br->buffer[cwords] << br->consumed_bits;
-+ } while(cwords >= words && val < end);
-+ }
-
-+ if(ucbits == 0 && cwords < words) {
-+ /* don't leave the head word with no unconsumed bits */
-+ crc16_update_word_(br, br->buffer[cwords++]);
-+ ucbits = FLAC__BITS_PER_WORD;
- }
-+
-+ br->consumed_bits = FLAC__BITS_PER_WORD - ucbits;
-+ br->consumed_words = cwords;
-+
-+ return true;
- }
--#endif
-
- #if 0 /* UNUSED */
- FLAC__bool FLAC__bitreader_read_golomb_signed(FLAC__BitReader *br, int *val, unsigned parameter)
+++ /dev/null
-diff -up flac-1.2.1/src/libFLAC/Makefile.am.cflags flac-1.2.1/src/libFLAC/Makefile.am
---- flac-1.2.1/src/libFLAC/Makefile.am.cflags 2007-09-14 23:06:17.000000000 +0200
-+++ flac-1.2.1/src/libFLAC/Makefile.am 2008-03-17 14:19:29.000000000 +0100
-@@ -41,7 +41,7 @@ CPUCFLAGS = -faltivec -force_cpusubtype_
- else
- # Linux-gcc for PPC does not have -force_cpusubtype_ALL, it is Darwin-specific
- #@@@ PPC optimizations temporarily disabled
--CPUCFLAGS = -maltivec -mabi=altivec -DFLAC__NO_ASM
-+CPUCFLAGS = -DFLAC__NO_ASM
- endif
- endif
-
-@@ -69,7 +69,7 @@ endif
- endif
- endif
-
--libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@
-+libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@ libFLAC_extracflags.la
-
- SUBDIRS = $(ARCH_SUBDIRS) include .
-
-@@ -112,7 +112,10 @@ libFLAC_la_SOURCES = \
- metadata_iterators.c \
- metadata_object.c \
- stream_decoder.c \
-- stream_encoder.c \
- stream_encoder_framing.c \
- window.c \
- $(extra_ogg_sources)
-+
-+noinst_LTLIBRARIES = libFLAC_extracflags.la
-+libFLAC_extracflags_la_SOURCES = stream_encoder.c
-+libFLAC_extracflags_la_CFLAGS = $(AM_CFLAGS) -funroll-loops
-diff -up flac-1.2.1/configure.in.cflags flac-1.2.1/configure.in
---- flac-1.2.1/configure.in.cflags 2007-09-13 17:48:42.000000000 +0200
-+++ flac-1.2.1/configure.in 2008-03-17 14:17:08.000000000 +0100
-@@ -301,7 +301,7 @@ else
- CPPFLAGS="-DNDEBUG $CPPFLAGS"
- if test "x$GCC" = xyes; then
- CPPFLAGS="-DFLaC__INLINE=__inline__ $CPPFLAGS"
-- CFLAGS="-O3 -funroll-loops -finline-functions -Wall -W -Winline $CFLAGS"
-+ CFLAGS="-Wall -W -Winline $CFLAGS"
- fi
- fi
-
+++ /dev/null
-diff -up flac-1.2.1/examples/cpp/encode/file/main.cpp.gcc43 flac-1.2.1/examples/cpp/encode/file/main.cpp
---- flac-1.2.1/examples/cpp/encode/file/main.cpp.gcc43 2007-09-13 17:58:03.000000000 +0200
-+++ flac-1.2.1/examples/cpp/encode/file/main.cpp 2008-01-08 10:27:39.000000000 +0100
-@@ -29,6 +29,7 @@
- #endif
-
- #include <stdio.h>
-+#include <string.h>
- #include <stdlib.h>
- #include "FLAC++/metadata.h"
- #include "FLAC++/encoder.h"
+++ /dev/null
-diff -up flac-1.2.1/src/libFLAC/include/private/ogg_helper.h.hidesyms flac-1.2.1/src/libFLAC/include/private/ogg_helper.h
---- flac-1.2.1/src/libFLAC/include/private/ogg_helper.h.hidesyms 2007-02-02 07:22:40.000000000 +0100
-+++ flac-1.2.1/src/libFLAC/include/private/ogg_helper.h 2008-01-29 15:27:13.000000000 +0100
-@@ -35,9 +35,13 @@
- #include <ogg/ogg.h>
- #include "FLAC/stream_encoder.h" /* for FLAC__StreamEncoder */
-
-+__attribute__((__visibility__("hidden")))
- void simple_ogg_page__init(ogg_page *page);
-+__attribute__((__visibility__("hidden")))
- void simple_ogg_page__clear(ogg_page *page);
-+__attribute__((__visibility__("hidden")))
- FLAC__bool simple_ogg_page__get_at(FLAC__StreamEncoder *encoder, FLAC__uint64 position, ogg_page *page, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderReadCallback read_callback, void *client_data);
-+__attribute__((__visibility__("hidden")))
- FLAC__bool simple_ogg_page__set_at(FLAC__StreamEncoder *encoder, FLAC__uint64 position, ogg_page *page, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderWriteCallback write_callback, void *client_data);
-
- #endif
-diff -up flac-1.2.1/src/libFLAC/include/private/bitreader.h.hidesyms flac-1.2.1/src/libFLAC/include/private/bitreader.h
---- flac-1.2.1/src/libFLAC/include/private/bitreader.h.hidesyms 2007-07-10 22:22:19.000000000 +0200
-+++ flac-1.2.1/src/libFLAC/include/private/bitreader.h 2008-01-29 15:27:13.000000000 +0100
-@@ -95,5 +95,6 @@ FLAC__bool FLAC__bitreader_read_golomb_u
- FLAC__bool FLAC__bitreader_read_utf8_uint32(FLAC__BitReader *br, FLAC__uint32 *val, FLAC__byte *raw, unsigned *rawlen);
- FLAC__bool FLAC__bitreader_read_utf8_uint64(FLAC__BitReader *br, FLAC__uint64 *val, FLAC__byte *raw, unsigned *rawlen);
-
-+__attribute__((__visibility__("hidden")))
- FLAC__bool bitreader_read_from_client_(FLAC__BitReader *br);
- #endif
-diff -up flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.hidesyms flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm
---- flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.hidesyms 2008-01-29 15:27:13.000000000 +0100
-+++ flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm 2008-01-29 15:28:32.000000000 +0100
-@@ -34,7 +34,7 @@
-
- data_section
-
--cglobal precompute_partition_info_sums_32bit_asm_ia32_
-+cglobal precompute_partition_info_sums_32bit_asm_ia32_:function hidden
-
- code_section
-
+++ /dev/null
-diff -up flac-1.2.1/test/test_seeking.sh.tests flac-1.2.1/test/test_seeking.sh
---- flac-1.2.1/test/test_seeking.sh.tests 2007-09-11 09:33:04.000000000 +0200
-+++ flac-1.2.1/test/test_seeking.sh 2008-01-29 13:52:03.000000000 +0100
-@@ -103,7 +103,7 @@ tiny_seek_count=100
- if [ "$FLAC__TEST_LEVEL" -gt 1 ] ; then
- small_seek_count=10000
- else
-- small_seek_count=100000
-+ small_seek_count=100
- fi
-
- for suffix in '' '-s' ; do
-diff -up flac-1.2.1/test/test_streams.sh.tests flac-1.2.1/test/test_streams.sh
---- flac-1.2.1/test/test_streams.sh.tests 2007-06-16 21:58:39.000000000 +0200
-+++ flac-1.2.1/test/test_streams.sh 2008-03-17 13:57:39.000000000 +0100
-@@ -39,6 +39,10 @@ if [ x"$FLAC__TEST_LEVEL" = x ] ; then
- FLAC__TEST_LEVEL=1
- fi
-
-+if [ "$FLAC__TEST_LEVEL" -eq 0 ] ; then
-+ exit 0
-+fi
-+
- flac --help 1>/dev/null 2>/dev/null || die "ERROR can't find flac executable"
-
- run_flac ()
-diff -up flac-1.2.1/src/test_streams/main.c.tests flac-1.2.1/src/test_streams/main.c
---- flac-1.2.1/src/test_streams/main.c.tests 2007-08-31 07:54:49.000000000 +0200
-+++ flac-1.2.1/src/test_streams/main.c 2008-01-29 13:53:46.000000000 +0100
-@@ -898,9 +898,9 @@ int main(int argc, char *argv[])
- if(!generate_noise("noise.raw", 65536 * 8 * 3)) return 1;
- if(!generate_noise("noise8m32.raw", 32)) return 1;
- if(!generate_wackywavs()) return 1;
-- for(channels = 1; channels <= 8; channels++) {
-+ for(channels = 1; channels <= 2; channels++) {
- unsigned bits_per_sample;
-- for(bits_per_sample = 4; bits_per_sample <= 24; bits_per_sample++) {
-+ for(bits_per_sample = 8; bits_per_sample <= 24; bits_per_sample += 8) {
- static const unsigned nsamples[] = { 1, 111, 4777 } ;
- unsigned samples;
- for(samples = 0; samples < sizeof(nsamples)/sizeof(nsamples[0]); samples++) {