update to 1.3.0 [release 1.3.0-1mamba;Tue Jun 04 2013]
This commit is contained in:
parent
99b6b6045d
commit
eb456698dc
@ -1,2 +1,11 @@
|
|||||||
# libflac
|
# libflac
|
||||||
|
|
||||||
|
FLAC stands for Free Lossless Audio Codec. Grossly oversimplified, FLAC is similar to MP3, but lossless, meaning that audio is compressed in FLAC without any loss in quality. This is similar to how Zip works, except with FLAC you will get much better compression because it is designed specifically for audio, and you can play back compressed FLAC files in your favorite player (or your car or home stereo, see links to the right for supported devices) just like you would an MP3 file.
|
||||||
|
|
||||||
|
The FLAC project consists of:
|
||||||
|
* the stream format
|
||||||
|
* reference encoders and decoders in library form
|
||||||
|
* flac, a command-line program to encode and decode FLAC files
|
||||||
|
* metaflac, a command-line metadata editor for FLAC files
|
||||||
|
* input plugins for various music players
|
||||||
|
|
||||||
|
25
libflac-1.1.2-libtool.patch
Normal file
25
libflac-1.1.2-libtool.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
--- flac-1.1.2/src/libFLAC/Makefile.am.moo 2005-03-28 14:40:52.665468000 -0500
|
||||||
|
+++ flac-1.1.2/src/libFLAC/Makefile.am 2005-03-28 14:41:40.414671000 -0500
|
||||||
|
@@ -64,7 +64,7 @@
|
||||||
|
libFLAC_la_LIBADD = ppc/gas/libFLAC-asm.la
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
-LOCAL_EXTRA_LDFLAGS = "-Wl,-read_only_relocs,warning"
|
||||||
|
+#LOCAL_EXTRA_LDFLAGS = "-Wl,-read_only_relocs,warning"
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
--- flac-1.1.2/configure.in.moo 2005-03-28 14:48:06.733965000 -0500
|
||||||
|
+++ flac-1.1.2/configure.in 2005-03-28 14:48:25.641039000 -0500
|
||||||
|
@@ -200,9 +200,9 @@
|
||||||
|
if test x$debug = xtrue; then
|
||||||
|
OUR_CFLAGS_HEAD="$OUR_CFLAGS_HEAD -g -O0 -DDEBUG"
|
||||||
|
else
|
||||||
|
- OUR_CFLAGS_HEAD="$OUR_CFLAGS_HEAD -O2 -DNDEBUG"
|
||||||
|
+ OUR_CFLAGS_HEAD="$OUR_CFLAGS_HEAD -DNDEBUG"
|
||||||
|
if test x$GCC = xyes; then
|
||||||
|
- OUR_CFLAGS_HEAD="$OUR_CFLAGS_HEAD -O3 -fomit-frame-pointer -funroll-loops -finline-functions -Wall -W -Winline -DFLaC__INLINE=__inline__"
|
||||||
|
+ OUR_CFLAGS_HEAD="$OUR_CFLAGS_HEAD -Wall -W -Winline -DFLaC__INLINE=__inline__"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
CFLAGS="$OUR_CFLAGS_HEAD $CFLAGS"
|
11
libflac-1.1.2-xmms-plugin.patch
Normal file
11
libflac-1.1.2-xmms-plugin.patch
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
--- src/plugin_xmms/configure.c.old 2005-04-08 12:16:17.000000000 +0200
|
||||||
|
+++ src/plugin_xmms/configure.c 2005-04-08 12:16:41.000000000 +0200
|
||||||
|
@@ -61,7 +61,7 @@
|
||||||
|
"", /* proxy_user */
|
||||||
|
"", /* proxy_pass */
|
||||||
|
FALSE, /* save_http_stream */
|
||||||
|
- "", /* save_http_path */
|
||||||
|
+ FALSE, /* save_http_path */
|
||||||
|
FALSE, /* cast_title_streaming */
|
||||||
|
FALSE /* use_udp_channel */
|
||||||
|
},
|
73
libflac-1.2.1-asm.patch
Normal file
73
libflac-1.2.1-asm.patch
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
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
|
558
libflac-1.2.1-bitreader.patch
Normal file
558
libflac-1.2.1-bitreader.patch
Normal file
@ -0,0 +1,558 @@
|
|||||||
|
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)
|
11
libflac-1.2.1-gcc43.patch
Normal file
11
libflac-1.2.1-gcc43.patch
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
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"
|
39
libflac-1.2.1-hidesyms.patch
Normal file
39
libflac-1.2.1-hidesyms.patch
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
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
|
||||||
|
|
190
libflac.spec
Normal file
190
libflac.spec
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
Name: libflac
|
||||||
|
Version: 1.3.0
|
||||||
|
Release: 1mamba
|
||||||
|
Summary: Free Lossless Audio Codec (FLAC)
|
||||||
|
Group: System/Multimedia
|
||||||
|
Vendor: openmamba
|
||||||
|
Distribution: openmamba
|
||||||
|
Packager: Silvan Calarco <silvan.calarco@mambasoft.it>
|
||||||
|
URL: http://flac.sourceforge.net/
|
||||||
|
Source: http://downloads.xiph.org/releases/flac/flac-%{version}.tar.xz
|
||||||
|
#Source: http://downloads.sourceforge.net/sourceforge/flac/flac-%{version}.tar.gz
|
||||||
|
Patch0: %{name}-1.1.2-xmms-plugin.patch
|
||||||
|
Patch1: %{name}-1.1.2-libtool.patch
|
||||||
|
Patch2: %{name}-1.2.1-gcc43.patch
|
||||||
|
Patch3: %{name}-1.2.1-asm.patch
|
||||||
|
Patch4: %{name}-1.2.1-hidesyms.patch
|
||||||
|
Patch5: %{name}-1.2.1-bitreader.patch
|
||||||
|
License: BSD, GPL
|
||||||
|
## AUTOBUILDREQ-BEGIN
|
||||||
|
BuildRequires: glibc-devel
|
||||||
|
BuildRequires: libgcc
|
||||||
|
BuildRequires: libstdc++6-devel
|
||||||
|
%if "%{stage1}" != "1"
|
||||||
|
BuildRequires: libglib1-devel
|
||||||
|
BuildRequires: libgtk1-devel
|
||||||
|
BuildRequires: libogg-devel
|
||||||
|
BuildRequires: libX11-devel
|
||||||
|
BuildRequires: libXext-devel
|
||||||
|
BuildRequires: libxmms-devel
|
||||||
|
%endif
|
||||||
|
## AUTOBUILDREQ-END
|
||||||
|
BuildRequires: libid3-devel >= 3.8.3
|
||||||
|
BuildRequires: nasm
|
||||||
|
%if "%{_host}" == "%{_build}"
|
||||||
|
BuildRequires: docbook2X >= 0.8.5
|
||||||
|
BuildRequires: doxygen
|
||||||
|
%endif
|
||||||
|
Provides: libflac11
|
||||||
|
Obsoletes: libflac11
|
||||||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-root
|
||||||
|
|
||||||
|
%description
|
||||||
|
FLAC stands for Free Lossless Audio Codec. Grossly oversimplified, FLAC is similar to MP3, but lossless, meaning that audio is compressed in FLAC without any loss in quality. This is similar to how Zip works, except with FLAC you will get much better compression because it is designed specifically for audio, and you can play back compressed FLAC files in your favorite player (or your car or home stereo, see links to the right for supported devices) just like you would an MP3 file.
|
||||||
|
|
||||||
|
The FLAC project consists of:
|
||||||
|
* the stream format
|
||||||
|
* reference encoders and decoders in library form
|
||||||
|
* flac, a command-line program to encode and decode FLAC files
|
||||||
|
* metaflac, a command-line metadata editor for FLAC files
|
||||||
|
* input plugins for various music players
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: Development files for %{name}
|
||||||
|
Group: Development/Libraries
|
||||||
|
Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
|
||||||
|
Provides: libflac11-devel
|
||||||
|
Obsoletes: libflac11-devel
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
FLAC stands for Free Lossless Audio Codec.
|
||||||
|
Grossly oversimplified, FLAC is similar to MP3, but lossless, meaning that audio is compressed in FLAC without any loss in quality.
|
||||||
|
This is similar to how Zip works, except with FLAC you will get much better compression because it is designed specifically for audio, and you can play back compressed FLAC files in your favorite player (or your car or home stereo, see links to the right for supported devices) just like you would an MP3 file.
|
||||||
|
|
||||||
|
This package contains static libraries and header files need for development.
|
||||||
|
|
||||||
|
%package doc
|
||||||
|
Summary: Documentation for %{name}
|
||||||
|
Group: Documentation
|
||||||
|
Provides: libflac11-doc
|
||||||
|
Obsoletes: libflac11-doc
|
||||||
|
|
||||||
|
%description doc
|
||||||
|
FLAC stands for Free Lossless Audio Codec.
|
||||||
|
Grossly oversimplified, FLAC is similar to MP3, but lossless, meaning that audio is compressed in FLAC without any loss in quality.
|
||||||
|
This is similar to how Zip works, except with FLAC you will get much better compression because it is designed specifically for audio, and you can play back compressed FLAC files in your favorite player (or your car or home stereo, see links to the right for supported devices) just like you would an MP3 file.
|
||||||
|
|
||||||
|
This package contains the documentation HTML pages for %{name}.
|
||||||
|
|
||||||
|
%package plugins-xmms
|
||||||
|
Summary: Flac plugin for XMMS
|
||||||
|
Group: System/Libraries
|
||||||
|
Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
|
||||||
|
Provides: libflac11-plugins-xmms
|
||||||
|
Obsoletes: libflac11-plugins-xmms
|
||||||
|
|
||||||
|
%description plugins-xmms
|
||||||
|
FLAC stands for Free Lossless Audio Codec.
|
||||||
|
Grossly oversimplified, FLAC is similar to MP3, but lossless, meaning that audio is compressed in FLAC without any loss in quality.
|
||||||
|
This is similar to how Zip works, except with FLAC you will get much better compression because it is designed specifically for audio, and you can play back compressed FLAC files in your favorite player (or your car or home stereo, see links to the right for supported devices) just like you would an MP3 file.
|
||||||
|
|
||||||
|
This package contains the Flac plugin for XMMS.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q -n flac-%{version}
|
||||||
|
%patch2 -p1
|
||||||
|
#%patch3 -p1
|
||||||
|
#%patch4 -p1
|
||||||
|
#%patch5 -p0
|
||||||
|
|
||||||
|
%build
|
||||||
|
%configure \
|
||||||
|
--disable-rpath \
|
||||||
|
--with-pic \
|
||||||
|
%if "%{stage1}" == "1"
|
||||||
|
--disable-xmms-plugin \
|
||||||
|
%endif
|
||||||
|
%if "%{_host}" != "%{_build}"
|
||||||
|
--with-ogg-includes=%{_prefix}/%{_host}/includes \
|
||||||
|
--with-ogg-libraries=%{_prefix}/%{_host}/lib
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%make
|
||||||
|
|
||||||
|
%install
|
||||||
|
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
|
||||||
|
%makeinstall
|
||||||
|
|
||||||
|
cp AUTHORS COPYING* README \
|
||||||
|
%{buildroot}%{_datadir}/doc/flac-%{version}
|
||||||
|
|
||||||
|
%clean
|
||||||
|
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
|
||||||
|
|
||||||
|
%post -p /sbin/ldconfig
|
||||||
|
%postun -p /sbin/ldconfig
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%{_bindir}/flac
|
||||||
|
%{_bindir}/metaflac
|
||||||
|
%{_libdir}/*.so.*
|
||||||
|
%{_mandir}/man1/flac.*
|
||||||
|
%{_mandir}/man1/metaflac.*
|
||||||
|
%dir %{_datadir}/doc/flac-%{version}
|
||||||
|
%{_datadir}/doc/flac-%{version}/AUTHORS
|
||||||
|
%{_datadir}/doc/flac-%{version}/COPYING*
|
||||||
|
%{_datadir}/doc/flac-%{version}/README
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%{_datadir}/aclocal/*.m4
|
||||||
|
%dir %{_includedir}/FLAC++
|
||||||
|
%dir %{_includedir}/FLAC
|
||||||
|
#%dir %{_includedir}/OggFLAC++
|
||||||
|
#%dir %{_includedir}/OggFLAC
|
||||||
|
%{_includedir}/FLAC++/*.h
|
||||||
|
%{_includedir}/FLAC/*.h
|
||||||
|
#%{_includedir}/OggFLAC++/*.h
|
||||||
|
#%{_includedir}/OggFLAC/*.h
|
||||||
|
#%{_libdir}/*.a
|
||||||
|
%{_libdir}/*.la
|
||||||
|
%{_libdir}/*.so
|
||||||
|
%{_libdir}/pkgconfig/flac++.pc
|
||||||
|
%{_libdir}/pkgconfig/flac.pc
|
||||||
|
|
||||||
|
%files doc
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%dir %{_datadir}/doc/flac-%{version}
|
||||||
|
%{_datadir}/doc/flac-%{version}/FLAC.tag
|
||||||
|
%{_datadir}/doc/flac-%{version}/html/*
|
||||||
|
|
||||||
|
%if "%{stage1}" != "1"
|
||||||
|
%files plugins-xmms
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%{_libdir}/xmms/Input/libxmms-flac.la
|
||||||
|
%{_libdir}/xmms/Input/libxmms-flac.so
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Tue Jun 04 2013 Automatic Build System <autodist@mambasoft.it> 1.3.0-1mamba
|
||||||
|
- update to 1.3.0
|
||||||
|
|
||||||
|
* Mon May 03 2010 Silvan Calarco <silvan.calarco@mambasoft.it> 1.2.1-2mamba
|
||||||
|
- rebuilt with gcc 4.3 (added patch)
|
||||||
|
- obsoletes libflac11*
|
||||||
|
|
||||||
|
* Sat Jun 21 2008 Silvan Calarco <silvan.calarco@mambasoft.it> 1.2.1-1mamba
|
||||||
|
- update to 1.2.1
|
||||||
|
|
||||||
|
* Wed Jun 14 2006 Stefano Cotta Ramusino <stefano.cotta@qilinux.it> 1.1.2-3qilnx
|
||||||
|
- added libtool patch
|
||||||
|
|
||||||
|
* Mon Sep 25 2005 Silvan Calarco <silvan.calarco@mambasoft.it> 1.1.2-2qilnx
|
||||||
|
- rebuilt against libxmms
|
||||||
|
|
||||||
|
* Thu Jun 09 2005 Davide Madrisan <davide.madrisan@qilinux.it> 1.1.2-1qilnx
|
||||||
|
- update to version 1.1.2 by autospec
|
||||||
|
|
||||||
|
* Fri Apr 09 2004 Davide Madrisan <davide.madrisan@qilinux.it> 1.1.0-1qilnx
|
||||||
|
- first build
|
Loading…
Reference in New Issue
Block a user