File libmpcdec-byteswap.patch of Package libmpcdec

--- configure.ac.orig
+++ configure.ac
@@ -4,12 +4,12 @@ AC_CONFIG_AUX_DIR(config)
 AM_INIT_AUTOMAKE(libmpcdec,1.2.6)
 AM_CONFIG_HEADER(include/config.h)
 
-AM_PROG_LIBTOOL
-
-CFLAGS="$CFLAGS -O3 -fomit-frame-pointer -fPIC"
-
-AC_C_BIGENDIAN(,CFLAGS="$CFLAGS -DMPC_LITTLE_ENDIAN",)
+AC_PROG_CC_STDC
+AC_USE_SYSTEM_EXTENSIONS
+AC_SYS_LARGEFILE
 
+LT_INIT([disable-static pic-only])
+AC_C_BIGENDIAN
 AC_HEADER_STDC
 AC_HEADER_STDBOOL
 AC_C_CONST
--- include/mpcdec/internal.h.orig
+++ include/mpcdec/internal.h
@@ -37,8 +37,8 @@
 
 #ifndef _mpcdec_internal_h
 #define _mpcdec_internal_h
-
-
+#include <byteswap.h>
+#pragma GCC visibility push(hidden)
 enum {
     MPC_DECODER_SYNTH_DELAY = 481
 };
@@ -46,8 +46,7 @@ enum {
 /// Big/little endian 32 bit byte swapping routine.
 static __inline
 mpc_uint32_t mpc_swap32(mpc_uint32_t val) {
-    return (((val & 0xff000000) >> 24) | ((val & 0x00ff0000) >> 8) |
-            ((val & 0x0000ff00) <<  8) | ((val & 0x000000ff) << 24));
+    return bswap_32(val);
 }
 
 /// Searches for a ID3v2-tag and reads the length (in bytes) of it.
@@ -60,6 +59,6 @@ mpc_int32_t JumpID3v2(mpc_reader* fp);
 mpc_uint32_t mpc_random_int(mpc_decoder *d); // in synth_filter.c
 void mpc_decoder_initialisiere_quantisierungstabellen(mpc_decoder *d, double scale_factor);
 void mpc_decoder_synthese_filter_float(mpc_decoder *d, MPC_SAMPLE_FORMAT* OutData);
-
+#pragma GCC visibility pop
 #endif // _mpcdec_internal_h
 
--- src/Makefile.am.orig
+++ src/Makefile.am
@@ -15,4 +15,4 @@ libmpcdec_la_SOURCES = \
 	synth_filter.c
 libmpcdec_la_LDFLAGS = -no-undefined -version-info 5:2:0
 
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/src
+AM_CPPFLAGS = -include $(top_srcdir)/include/config.h -I$(top_srcdir)/include -I$(top_srcdir)/src
--- src/mpc_decoder.c.orig
+++ src/mpc_decoder.c
@@ -39,6 +39,7 @@
 #include <mpcdec/internal.h>
 #include <mpcdec/requant.h>
 #include <mpcdec/huffman.h>
+#include <byteswap.h>
 
 //SV7 tables
 extern const HuffmanTyp*   mpc_table_HuffQ [2] [8];
@@ -58,8 +59,8 @@ extern const HuffmanTyp    mpc_table_Reg
 
 #endif
 
-#ifndef MPC_LITTLE_ENDIAN
-#define SWAP(X) mpc_swap32(X)
+#ifdef WORDS_BIGENDIAN
+#define SWAP(X) bswap_32(X)
 #else
 #define SWAP(X) (X)
 #endif
@@ -267,7 +268,7 @@ mpc_decoder_decode_frame(mpc_decoder *d,
   if (in_len > sizeof(d->Speicher)) in_len = sizeof(d->Speicher);
   memcpy(d->Speicher, in_buffer, in_len);
   for (i = 0; i < (in_len + 3) / 4; i++)
-    d->Speicher[i] = mpc_swap32(d->Speicher[i]);
+    d->Speicher[i] = bswap_32(d->Speicher[i]);
   d->dword = SWAP(d->Speicher[0]);
   switch (d->StreamVersion) {
 #ifdef MPC_SUPPORT_SV456
--- src/streaminfo.c.orig
+++ src/streaminfo.c
@@ -37,6 +37,7 @@
 
 #include <mpcdec/mpcdec.h>
 #include <mpcdec/internal.h>
+#include <byteswap.h>
 
 static const char *
 Stringify(mpc_uint32_t profile) // profile is 0...15, where 7...13 is used
@@ -217,11 +218,11 @@ mpc_streaminfo_read(mpc_streaminfo * si,
     si->tag_offset = si->total_file_length;
     
     if (memcmp(HeaderData, "MP+", 3)) return ERROR_CODE_INVALIDSV;
-#ifndef MPC_LITTLE_ENDIAN
+#ifdef WORDS_BIGENDIAN
     {
         mpc_uint32_t ptr;
         for (ptr = 0; ptr < 8; ptr++) {
-            HeaderData[ptr] = mpc_swap32(HeaderData[ptr]);
+            HeaderData[ptr] = bswap_32(HeaderData[ptr]);
         }
     }
 #endif
openSUSE Build Service is sponsored by