Commit 3881edf6 authored by Alexandre Julliard's avatar Alexandre Julliard

mpg123: Import upstream release 1.32.5.

parent fa42210c
......@@ -13572,7 +13572,7 @@ then :
MPG123_PE_LIBS=mpg123
if ${MPG123_PE_CFLAGS:+false} :
then :
MPG123_PE_CFLAGS="-I\$(top_srcdir)/libs/mpg123/src/libmpg123"
MPG123_PE_CFLAGS="-I\$(top_srcdir)/libs/mpg123/src/include"
else $as_nop
enable_mpg123=no
fi
......
......@@ -1186,7 +1186,7 @@ WINE_EXTLIB_FLAGS(JPEG, jpeg, jpeg, "-I\$(top_srcdir)/libs/jpeg")
WINE_EXTLIB_FLAGS(JXR, jxr, jxr, "-I\$(top_srcdir)/libs/jxr/jxrgluelib -I\$(top_srcdir)/libs/jxr/image/sys")
WINE_EXTLIB_FLAGS(LCMS2, lcms2, lcms2, "-I\$(top_srcdir)/libs/lcms2/include")
WINE_EXTLIB_FLAGS(LDAP, ldap, ldap, "-I\$(top_srcdir)/libs/ldap/include")
WINE_EXTLIB_FLAGS(MPG123, mpg123, mpg123, "-I\$(top_srcdir)/libs/mpg123/src/libmpg123")
WINE_EXTLIB_FLAGS(MPG123, mpg123, mpg123, "-I\$(top_srcdir)/libs/mpg123/src/include")
WINE_EXTLIB_FLAGS(MUSL, musl, musl)
WINE_EXTLIB_FLAGS(PNG, png, "png \$(ZLIB_PE_LIBS)", "-I\$(top_srcdir)/libs/png")
WINE_EXTLIB_FLAGS(TIFF, tiff, "tiff \$(ZLIB_PE_LIBS)", "-I\$(top_srcdir)/libs/tiff/libtiff")
......
......@@ -134,9 +134,6 @@
/* Define to 1 if you have the `mx' library (-lmx). */
/* #undef HAVE_LIBMX */
/* Define to 1 if you have the <limits.h> header file. */
#define HAVE_LIMITS_H 1
/* Define to 1 if you have the <linux/soundcard.h> header file. */
/* #undef HAVE_LINUX_SOUNDCARD_H */
......@@ -439,7 +436,7 @@
#define PACKAGE_NAME "mpg123"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "mpg123 1.32.2"
#define PACKAGE_STRING "mpg123 1.32.5"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "mpg123"
......@@ -448,7 +445,7 @@
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "1.32.2"
#define PACKAGE_VERSION "1.32.5"
/* Define to only include portable library API (no off_t, no internal I/O). */
/* #undef PORTABLE_API */
......@@ -459,21 +456,9 @@
/* Define for calculating tables at runtime. */
/* #undef RUNTIME_TABLES */
/* The size of `int32_t', as computed by sizeof. */
#define SIZEOF_INT32_T 4
/* The size of `long', as computed by sizeof. */
#define SIZEOF_LONG 4
/* The size of `off_t', as computed by sizeof. */
#define SIZEOF_OFF_T 4
/* The size of `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T 4
/* The size of `ssize_t', as computed by sizeof. */
#define SIZEOF_SSIZE_T 4
/* Define to 1 if all of the C90 standard headers exist (not just the ones
required in a freestanding environment). This macro is provided for
backward compatibility; new code need not use it. */
......@@ -492,7 +477,7 @@
/* #undef USE_YASM_FOR_AVX */
/* Version number of package */
#define VERSION "1.32.2"
#define VERSION "1.32.5"
/* Define to use Win32 named pipes */
#define WANT_WIN32_FIFO 1
......@@ -535,30 +520,3 @@
#ifndef __cplusplus
/* #undef inline */
#endif
/* Define to `short' if <sys/types.h> does not define. */
/* #undef int16_t */
/* Define to `int' if <sys/types.h> does not define. */
/* #undef int32_t */
/* Define to `long long' if <sys/types.h> does not define. */
/* #undef int64_t */
/* Define to `long' if <sys/types.h> does not define. */
/* #undef ptrdiff_t */
/* Define to `unsigned long' if <sys/types.h> does not define. */
/* #undef size_t */
/* Define to `long' if <sys/types.h> does not define. */
/* #undef ssize_t */
/* Define to `unsigned short' if <sys/types.h> does not define. */
/* #undef uint16_t */
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef uint32_t */
/* Define to `unsigned long' if <sys/types.h> does not define. */
/* #undef uintptr_t */
......@@ -39,7 +39,7 @@
#include <shlwapi.h>
#endif
#include "debug.h"
#include "../common/debug.h"
#ifndef WINDOWS_UWP
......
......@@ -21,10 +21,8 @@
#include <errno.h>
#ifdef HAVE_STDLIB_H
/* realloc, size_t */
#include <stdlib.h>
#endif
#include <stddef.h>
......@@ -48,16 +46,10 @@
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_INTTYPES_H
#include <inttypes.h>
#endif
#ifdef HAVE_STDINT_H
#include <stdint.h>
#endif
/* We want SIZE_MAX, etc. */
#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif
#ifndef SIZE_MAX
#define SIZE_MAX ((size_t)-1)
......@@ -85,26 +77,11 @@
#define INT32_MIN (-INT32_MAX - 1)
#endif
#ifndef OFF_MAX
#undef OFF_MIN
#if SIZEOF_OFF_T == 4
#define OFF_MAX INT32_MAX
#define OFF_MIN INT32_MIN
#elif SIZEOF_OFF_T == 8
#define OFF_MAX INT64_MAX
#define OFF_MIN INT64_MIN
#else
#error "Unexpected width of off_t."
#endif
#endif
// Add two values (themselves assumed to be < limit), saturating to given limit.
#define SATURATE_ADD(inout, add, limit) inout = (limit-add >= inout) ? inout+add : limit;
#define SATURATE_SUB(inout, sub, limit) inout = (limit+sub >= inout) ? inout-sub : limit;
#ifdef HAVE_STRING_H
#include <string.h>
#endif
#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif
......@@ -150,29 +127,6 @@ const char *INT123_strerror(int errnum);
and returns NULL on NULL input instead of crashing. */
char* INT123_compat_strdup(const char *s);
/* If we have the size checks enabled, try to derive some sane printfs.
Simple start: Use max integer type and format if long is not big enough.
I am hesitating to use %ll without making sure that it's there... */
#if (defined SIZEOF_OFF_T) && (SIZEOF_OFF_T > SIZEOF_LONG) && (defined PRIiMAX)
# define OFF_P PRIiMAX
typedef intmax_t off_p;
#else
# define OFF_P "li"
typedef long off_p;
#endif
#if (defined SIZEOF_SIZE_T) && (SIZEOF_SIZE_T > SIZEOF_LONG) && (defined PRIuMAX) && (defined PRIiMAX)
# define SIZE_P PRIuMAX
typedef uintmax_t size_p;
# define SSIZE_P PRIiMAX
typedef intmax_t ssize_p;
#else
# define SIZE_P "lu"
typedef unsigned long size_p;
# define SSIZE_P "ld"
typedef long ssize_p;
#endif
/* Get an environment variable, possibly converted to UTF-8 from wide string.
The return value is a copy that you shall free. */
char *INT123_compat_getenv(const char* name);
......@@ -200,7 +154,6 @@ FILE* INT123_compat_fdopen(int fd, const char *mode);
int INT123_compat_close(int infd);
int INT123_compat_fclose(FILE* stream);
/**
* Setting binary mode on a descriptor, where necessary.
* We do not bother with errors. This has to work.
......@@ -326,10 +279,15 @@ size_t INT123_unintr_fwrite(const void *ptr, size_t size, size_t nmemb, FILE *st
#define normal mpg123_normal
#endif
#include "true.h"
#include "../common/true.h"
#if (!defined(WIN32) || defined (__CYGWIN__)) && defined(HAVE_SIGNAL_H)
void (*INT123_catchsignal(int signum, void(*handler)(int)))(int);
#endif
// Some ancient toolchains miss the documented errno value.
#if defined(_WIN32) && !defined(EOVERFLOW)
#define EOVERFLOW 132
#endif
#endif
......@@ -26,7 +26,7 @@
#include <locale.h>
#endif
#include "debug.h"
#include "../common/debug.h"
/* A safe realloc also for very old systems where realloc(NULL, size) returns NULL. */
void *INT123_safe_realloc(void *ptr, size_t size)
......
......@@ -19,7 +19,7 @@
*/
#define MPG123_API_VERSION 48
/** library patch level at client build time */
#define MPG123_PATCHLEVEL 0
#define MPG123_PATCHLEVEL 2
#ifndef MPG123_EXPORT
/** Defines needed for MS Visual Studio(tm) DLL builds.
......@@ -1327,7 +1327,7 @@ MPG123_EXPORT int mpg123_volume_change(mpg123_handle *mh, double change);
/** Adjust output volume including the RVA setting by chosen amount
* \param mh handle
* \param change volume adjustment in decibels (limited to +/- 60 dB)
* \param db volume adjustment in decibels (limited to +/- 60 dB)
* \return MPG123_OK on success
*/
MPG123_EXPORT int mpg123_volume_change_db(mpg123_handle *mh, double db);
......
......@@ -203,16 +203,6 @@ void INT123_dct64_i386 (real *,real *,real *);
void INT123_dct64_altivec(real *,real *,real *);
void INT123_dct64_i486(int*, int* , real*); /* Yeah, of no use outside of synth_i486.c .*/
/* This is used by the layer 3 decoder, one generic function and 3DNow variants. */
void INT123_dct36 (real *,real *,real *,const real *,real *);
void INT123_dct36_3dnow (real *,real *,real *,const real *,real *);
void INT123_dct36_3dnowext(real *,real *,real *,const real *,real *);
void INT123_dct36_x86_64 (real *,real *,real *,const real *,real *);
void INT123_dct36_sse (real *,real *,real *,const real *,real *);
void INT123_dct36_avx (real *,real *,real *,const real *,real *);
void INT123_dct36_neon (real *,real *,real *,const real *,real *);
void INT123_dct36_neon64 (real *,real *,real *,const real *,real *);
/* Tools for NtoM resampling synth, defined in ntom.c . */
int INT123_synth_ntom_set_step(mpg123_handle *fr); /* prepare ntom decoding */
unsigned long INT123_ntom_val(mpg123_handle *fr, int64_t frame); /* compute INT123_ntom_val for frame offset */
......@@ -232,6 +222,13 @@ int64_t INT123_ntom_frameoff(mpg123_handle *fr, int64_t soff);
/* Initialization of any static data that majy be needed at runtime.
Make sure you call these once before it is too late. */
#ifndef NO_LAYER3
#ifdef OPT_THE_DCT36
// Set the current dct36 function choice. The pointers themselves are to static functions.
void INT123_dct36_choose(mpg123_handle *fr);
int INT123_dct36_match(mpg123_handle *fr, enum optdec t);
#endif
#ifdef RUNTIME_TABLES
void INT123_init_layer3(void);
#endif
......
......@@ -7,7 +7,7 @@
*/
#include "config.h"
#include "compat.h"
#include "../compat/compat.h"
#include "dither.h"
static const uint32_t init_seed = 2463534242UL;
......
......@@ -26,8 +26,8 @@
*/
#include "mpg123lib_intern.h"
#include "sample.h"
#include "debug.h"
#include "../common/sample.h"
#include "../common/debug.h"
/* static int chans[NUM_CHANNELS] = { 1 , 2 }; */
static const long my_rates[MPG123_RATES] = /* only the standard rates */
......@@ -686,7 +686,7 @@ static void conv_s16_to_s32(struct outbuffer *buf)
#endif
#endif
#include "swap_bytes_impl.h"
#include "../common/swap_bytes_impl.h"
void swap_endian(struct outbuffer *buf, int block)
{
......
......@@ -9,7 +9,7 @@
#define WANT_GETCPUFLAGS
#include "mpg123lib_intern.h"
#include "getcpuflags.h"
#include "debug.h"
#include "../common/debug.h"
static void frame_fixed_reset(mpg123_handle *fr);
......@@ -193,13 +193,12 @@ int INT123_frame_outbuffer(mpg123_handle *fr)
{
fr->err = MPG123_BAD_BUFFER;
if(NOQUIET)
merror( "have external buffer of size %"SIZE_P", need %"SIZE_P
, (size_p)fr->buffer.size, (size_p)size );
merror("have external buffer of size %zu, need %zu", fr->buffer.size, size);
return MPG123_ERR;
}
}
debug1("need frame buffer of %"SIZE_P, (size_p)size);
debug1("need frame buffer of %zu", size);
if(fr->buffer.rdata != NULL && fr->buffer.size != size)
{
free(fr->buffer.rdata);
......@@ -222,7 +221,7 @@ int INT123_frame_outbuffer(mpg123_handle *fr)
int attribute_align_arg mpg123_replace_buffer(mpg123_handle *mh, void *data, size_t size)
{
debug2("replace buffer with %p size %"SIZE_P, data, (size_p)size);
debug2("replace buffer with %p size %zu", data, size);
if(mh == NULL) return MPG123_BAD_HANDLE;
/* Will accept any size, the error comes later... */
if(data == NULL)
......
......@@ -167,11 +167,9 @@ struct mpg123_handle_struct
{
#ifdef OPT_MULTI
#ifndef NO_LAYER3
#if (defined OPT_3DNOW_VINTAGE || defined OPT_3DNOWEXT_VINTAGE || defined OPT_SSE || defined OPT_X86_64 || defined OPT_AVX || defined OPT_NEON || defined OPT_NEON64)
#ifdef OPT_THE_DCT36
void (*the_dct36)(real *,real *,real *,const real *,real *);
#endif
#endif
#endif
enum optdec type;
......
......@@ -7,7 +7,7 @@
This is no stand-alone header, precisely to be able to fool it into using fake handle types for testing the math.
*/
#include "debug.h"
#include "../common/debug.h"
#ifdef GAPLESS
/* From internal sample number to external. */
......@@ -81,8 +81,8 @@ static void frame_buffercheck(mpg123_handle *fr)
}
if(VERBOSE3)
fprintf(stderr, "\nNote: Cut frame %" PRIi64 " buffer on end of stream to %"
PRIi64 " samples, fill now %"SIZE_P" bytes.\n"
, fr->num, (fr->num == fr->lastframe ? fr->lastoff : 0), (size_p)fr->buffer.fill);
PRIi64 " samples, fill now %zu bytes.\n"
, fr->num, (fr->num == fr->lastframe ? fr->lastoff : 0), fr->buffer.fill);
}
/* The first interesting frame: Skip some leading samples. */
......
......@@ -13,7 +13,7 @@
#define _MPG123_GETBITS_H_
#include "mpg123lib_intern.h"
#include "debug.h"
#include "../common/debug.h"
#define backbits(fr,nob) ((void)( \
fr->bits_avail += nob, \
......
......@@ -10,7 +10,7 @@
#ifndef NO_ICY
#include "compat.h"
#include "../compat/compat.h"
#include "mpg123.h"
struct icy_meta
......
......@@ -28,7 +28,7 @@
#include "config.h"
/* Includes string and stdlib headers... */
#include "compat.h"
#include "../compat/compat.h"
/* ThOr: too lazy for this type check; also we use char/short all around anyway.
Of cource, it would be the proper way to use _these_ kind of types all around. */
......
......@@ -85,7 +85,7 @@
#include "mpg123lib_intern.h"
#include "id3.h"
#include "debug.h"
#include "../common/debug.h"
#ifndef NO_ID3V2 /* Only the main parsing routine will always be there. */
......@@ -352,7 +352,7 @@ static void store_id3_text(mpg123_string *sb, unsigned char *source, size_t sour
}
memcpy(sb->p, source, source_size);
sb->fill = source_size;
debug1("stored undecoded ID3 text of size %"SIZE_P, (size_p)source_size);
debug1("stored undecoded ID3 text of size %zu", source_size);
return;
}
......@@ -567,7 +567,7 @@ static void process_comment(mpg123_handle *fr, enum frame_types tt, unsigned cha
if(realsize < (size_t)(descr-realdata))
{
if(NOQUIET) error1("Invalid frame size of %"SIZE_P" (too small for anything).", (size_p)realsize);
if(NOQUIET) error1("Invalid frame size of %zu (too small for anything).", realsize);
return;
}
if(encoding > mpg123_id3_enc_max)
......@@ -622,8 +622,8 @@ static void process_comment(mpg123_handle *fr, enum frame_types tt, unsigned cha
if(VERBOSE4) /* Do _not_ print the verbatim text: The encoding might be funny! */
{
fprintf(stderr, "Note: ID3 comm/uslt desc of length %"SIZE_P".\n", (size_p)xcom->description.fill);
fprintf(stderr, "Note: ID3 comm/uslt text of length %"SIZE_P".\n", (size_p)xcom->text.fill);
fprintf(stderr, "Note: ID3 comm/uslt desc of length %zu.\n", xcom->description.fill);
fprintf(stderr, "Note: ID3 comm/uslt text of length %zu.\n", xcom->text.fill);
}
/* Look out for RVA info only when we really deal with a straight comment. */
if(tt == comment && localcom.description.fill > 0)
......
......@@ -8,7 +8,7 @@
*/
#include "index.h"
#include "debug.h"
#include "../common/debug.h"
/* The next expected frame offset, one step ahead. */
static int64_t fi_next(struct frame_index *fi)
......@@ -124,7 +124,7 @@ int INT123_fi_set(struct frame_index *fi, int64_t *offsets, int64_t step, size_t
void INT123_fi_reset(struct frame_index *fi)
{
debug1("reset with size %"SIZE_P, (size_p)fi->size);
debug1("reset with size %zu", fi->size);
fi->fill = 0;
fi->step = 1;
fi->next = fi_next(fi);
......
......@@ -21,7 +21,7 @@
*/
#include "config.h"
#include "compat.h"
#include "../compat/compat.h"
struct frame_index
{
......
......@@ -10,7 +10,7 @@
#include "mpg123lib_intern.h"
#include "getbits.h"
#include "debug.h"
#include "../common/debug.h"
/*
Allocation value is not allowed to be 15. Initially, libmad showed me the
......
......@@ -21,9 +21,17 @@
#include "huffman.h"
#endif
#include "getbits.h"
#include "debug.h"
#include "../common/debug.h"
/* Predeclare the assembly routines, only called from wrappers here. */
void INT123_dct36_3dnow (real *,real *,real *,const real *,real *);
void INT123_dct36_3dnowext(real *,real *,real *,const real *,real *);
void INT123_dct36_x86_64 (real *,real *,real *,const real *,real *);
void INT123_dct36_sse (real *,real *,real *,const real *,real *);
void INT123_dct36_avx (real *,real *,real *,const real *,real *);
void INT123_dct36_neon (real *,real *,real *,const real *,real *);
void INT123_dct36_neon64 (real *,real *,real *,const real *,real *);
/* define CUT_SFB21 if you want to cut-off the frequency above 16kHz */
#if 0
......@@ -1256,10 +1264,7 @@ static void III_antialias(real xr[SBLIMIT][SSLIMIT],struct gr_info_s *gr_info)
Mathematics of Computation, Volume 32, Number 141, January 1978,
Pages 175-199
*/
/* Calculation of the inverse MDCT
used to be static without 3dnow - does that really matter? */
void INT123_dct36(real *inbuf,real *o1,real *o2,const real *wintab,real *tsbuf)
static void INT123_dct36(real *inbuf,real *o1,real *o2,const real *wintab,real *tsbuf)
{
real tmp[18];
......@@ -1449,6 +1454,105 @@ void INT123_dct36(real *inbuf,real *o1,real *o2,const real *wintab,real *tsbuf)
}
}
// Wrap the assembly routine calls into C functions that serve as jump target to satisfy
// indirect branch protection if the toolchain enables that. Otherwise, we'd need to anticipate
// that in the assembly (and ensure assemblers support endbr64 and friends).
// Loss of efficiency:
// In the case of one static optimization choice, we do not have that problem.
#ifdef OPT_THE_DCT36
#define DCT36_WRAP(asmfunc) \
static void asmfunc ## _wrap(real *inbuf,real *o1,real *o2,const real *wintab,real *tsbuf) \
{ \
asmfunc(inbuf, o1, o2, wintab, tsbuf); \
}
#ifdef OPT_SSE
DCT36_WRAP(INT123_dct36_sse)
#endif
#ifdef OPT_3DNOWEXT_VINTAGE
DCT36_WRAP(INT123_dct36_3dnowext)
#endif
#ifdef OPT_3DNOW_VINTAGE
DCT36_WRAP(INT123_dct36_3dnow)
#endif
#ifdef OPT_X86_64
DCT36_WRAP(INT123_dct36_x86_64)
#endif
#ifdef OPT_AVX
DCT36_WRAP(INT123_dct36_avx)
#endif
#ifdef OPT_NEON
DCT36_WRAP(INT123_dct36_neon)
#endif
#ifdef OPT_NEON64
DCT36_WRAP(INT123_dct36_neon64)
#endif
int INT123_dct36_match(mpg123_handle *fr, enum optdec t)
{
#ifdef OPT_SSE
if(t == sse && fr->cpu_opts.the_dct36 == INT123_dct36_sse_wrap)
return 1;
#endif
#ifdef OPT_3DNOWEXT_VINTAGE
if(t == dreidnowext_vintage && fr->cpu_opts.the_dct36 == INT123_dct36_3dnowext_wrap)
return 1;
#endif
#ifdef OPT_3DNOW_VINTAGE
if(t == dreidnow_vintage && fr->cpu_opts.the_dct36 == INT123_dct36_3dnow_wrap)
return 1;
#endif
return 0;
}
void INT123_dct36_choose(mpg123_handle *fr)
{
switch(fr->cpu_opts.type)
{
#ifdef OPT_SSE
case sse:
fr->cpu_opts.the_dct36 = INT123_dct36_sse_wrap;
break;
#endif
#ifdef OPT_3DNOWEXT_VINTAGE
case dreidnowext_vintage:
fr->cpu_opts.the_dct36 = INT123_dct36_3dnowext_wrap;
break;
#endif
#ifdef OPT_3DNOW_VINTAGE
case dreidnow_vintage:
fr->cpu_opts.the_dct36 = INT123_dct36_3dnow_wrap;
break;
#endif
#ifdef OPT_AVX
case avx:
fr->cpu_opts.the_dct36 = INT123_dct36_avx_wrap;
break;
#endif
#ifdef OPT_X86_64
case x86_64:
fr->cpu_opts.the_dct36 = INT123_dct36_x86_64_wrap;
break;
#endif
#ifdef OPT_NEON
case neon:
fr->cpu_opts.the_dct36 = INT123_dct36_neon_wrap;
break;
#endif
#ifdef OPT_NEON64
case neon:
fr->cpu_opts.the_dct36 = INT123_dct36_neon64_wrap;
break;
#endif
default:
fr->cpu_opts.the_dct36 = INT123_dct36;
}
}
#endif
/* new DCT12 */
static void dct12(real *in,real *rawout1,real *rawout2,register const real *wi,register real *ts)
......
......@@ -32,19 +32,35 @@
#endif
// For correct MPG123_EXPORT.
#include "abi_align.h"
#include "../common/abi_align.h"
// Need the full header with non-portable API, for the bare mpg123_open*()
// declarations. But no renaming shenanigans.
#include "mpg123.h"
#include "lfs_wrap.h"
#include "abi_align.h"
#include "compat.h"
#include "../common/abi_align.h"
#include "../compat/compat.h"
#include <sys/stat.h>
#include <fcntl.h>
#include "debug.h"
#ifndef OFF_MAX
#undef OFF_MIN
#if SIZEOF_OFF_T == 4
#define OFF_MAX INT32_MAX
#define OFF_MIN INT32_MIN
#elif SIZEOF_OFF_T == 8
#define OFF_MAX INT64_MAX
#define OFF_MIN INT64_MIN
#else
#error "Unexpected width of off_t."
#endif
#endif
// A paranoid check that someone did not define a wrong SIZEOF_OFF_T at configure time.
typedef unsigned char MPG123_STATIC_ASSERT[(SIZEOF_OFF_T == sizeof(off_t)) ? 1 : -1];
#include "../common/debug.h"
// We do not want to expose this publicly, but it is cleaner to have it also defined
// as portable API to offer the legacy function wrapper over. It's an undocumented
......@@ -90,7 +106,7 @@ struct wrap_data
off_t (*r_lseek)(int, off_t, int);
mpg123_ssize_t (*r_h_read)(void *, void *, size_t);
off_t (*r_h_lseek)(void*, off_t, int);
#if LFS_LARGEFILE_64
#ifdef LFS_LARGEFILE_64
mpg123_ssize_t (*r_read_64) (int, void *, size_t);
off64_t (*r_lseek_64)(int, off64_t, int);
mpg123_ssize_t (*r_h_read_64)(void *, void *, size_t);
......@@ -175,7 +191,7 @@ static struct wrap_data* wrap_get(mpg123_handle *mh, int force_alloc)
whd->r_lseek = NULL;
whd->r_h_read = NULL;
whd->r_h_lseek = NULL;
#if LFS_LARGEFILE_64
#ifdef LFS_LARGEFILE_64
whd->r_read_64 = NULL;
whd->r_lseek_64 = NULL;
whd->r_h_read_64 = NULL;
......
......@@ -7,19 +7,19 @@
*/
#include "mpg123lib_intern.h"
#include "version.h"
#include "../version.h"
#include "icy2utf8.h"
#include "gapless.h"
/* Want accurate rounding function regardless of decoder setup. */
#define FORCE_ACCURATE
#include "sample.h"
#include "../common/sample.h"
#include "parse.h"
#ifndef PORTABLE_API
#include "lfs_wrap.h"
#endif
#include "debug.h"
#include "../common/debug.h"
#define SEEKFRAME(mh) ((mh)->ignoreframe < 0 ? 0 : (mh)->ignoreframe)
......@@ -648,9 +648,10 @@ int attribute_align_arg mpg123_open_handle(mpg123_handle *mh, void *iohandle)
#ifndef PORTABLE_API
ret = INT123_wrap_open( mh, iohandle, NULL, -1
, mh->p.timeout, mh->p.flags & MPG123_QUIET );
iohandle = ret == LFS_WRAP_NONE ? iohandle : mh->wrapperdata;
if(ret >= 0)
#endif
ret = INT123_open_stream_handle(mh, ret == LFS_WRAP_NONE ? iohandle : mh->wrapperdata);
ret = INT123_open_stream_handle(mh, iohandle);
return ret;
}
......@@ -911,7 +912,8 @@ static void decode_the_frame(mpg123_handle *fr)
if(fr->buffer.fill < needed_bytes)
{
if(VERBOSE2)
fprintf(stderr, "Note: broken frame %li, filling up with %"SIZE_P" zeroes, from %"SIZE_P"\n", (long)fr->num, (size_p)(needed_bytes-fr->buffer.fill), (size_p)fr->buffer.fill);
fprintf( stderr, "Note: broken frame %li, filling up with %zu zeroes, from %zu\n"
, (long)fr->num, (needed_bytes-fr->buffer.fill), fr->buffer.fill );
/*
One could do a loop with individual samples instead... but zero is zero
......@@ -931,7 +933,7 @@ static void decode_the_frame(mpg123_handle *fr)
else
{
if(NOQUIET)
error2("I got _more_ bytes than expected (%"SIZE_P" / %"SIZE_P"), that should not be possible!", (size_p)fr->buffer.fill, (size_p)needed_bytes);
error2("I got _more_ bytes than expected (%zu / %zu), that should not be possible!", fr->buffer.fill, needed_bytes);
}
}
#endif
......
......@@ -15,9 +15,9 @@
#include "config.h" /* Load this before _anything_ */
#include "abi_align.h"
#include "../common/abi_align.h"
#include "compat.h"
#include "../compat/compat.h"
// Only portable API plays a role in the library itself, outside of lfs_wrap.c.
// Also, we need to ensure no suffix renaming for the primary implementations.
......@@ -230,12 +230,6 @@ static inline int32_t scale_rounded(int32_t x, int shift)
#endif
#ifndef REAL_IS_FIXED
# if (defined SIZEOF_INT32_T) && (SIZEOF_INT32_T != 4)
# error "Bad 32bit types!!!"
# endif
#endif
#ifndef DOUBLE_TO_REAL
# define DOUBLE_TO_REAL(x) (real)(x)
#endif
......@@ -284,7 +278,7 @@ static inline int32_t scale_rounded(int32_t x, int shift)
now: factor on minimum frame buffer size (which takes upsampling into account) */
#define AUDIOBUFSIZE 2
#include "true.h"
#include "../common/true.h"
#define MAX_NAME_SIZE 81
#define SBLIMIT 32
......
......@@ -8,7 +8,7 @@
#define SAFE_NTOM /* Do not depend on int64_t*int64_t with big values still being in the range... */
#include "mpg123lib_intern.h"
#include "debug.h"
#include "../common/debug.h"
int INT123_synth_ntom_set_step(mpg123_handle *fr)
{
......
......@@ -12,7 +12,7 @@
#define WANT_GETCPUFLAGS
#include "mpg123lib_intern.h" /* includes optimize.h */
#include "getcpuflags.h"
#include "debug.h"
#include "../common/debug.h"
/* Ugly macros to build conditional synth function array values. */
......@@ -160,8 +160,8 @@ static enum optdec sse_or_vintage(mpg123_handle *fr)
enum optdec type;
type = sse_vintage;
# ifdef OPT_SSE
# ifdef OPT_MULTI
if(fr->cpu_opts.the_dct36 == INT123_dct36_sse)
# ifdef OPT_THE_DCT36
if(INT123_dct36_match(fr, sse))
# endif
type = sse;
# endif
......@@ -192,7 +192,7 @@ static int find_dectype(mpg123_handle *fr)
type = dreidnowext;
# ifdef OPT_3DNOWEXT_VINTAGE
# ifdef OPT_MULTI
if(fr->cpu_opts.the_dct36 == INT123_dct36_3dnowext)
if(INT123_dct36_match(fr, dreidnowext_vintage))
# endif
type = dreidnowext_vintage;
# endif
......@@ -210,7 +210,7 @@ static int find_dectype(mpg123_handle *fr)
type = dreidnow;
# ifdef OPT_3DNOW_VINTAGE
# ifdef OPT_MULTI
if(fr->cpu_opts.the_dct36 == INT123_dct36_3dnow)
if(INT123_dct36_match(fr, dreidnow_vintage))
# endif
type = dreidnow_vintage;
# endif
......@@ -503,13 +503,6 @@ int INT123_frame_cpu_opt(mpg123_handle *fr, const char* cpu)
#endif
fr->cpu_opts.type = nodec;
#ifdef OPT_MULTI
#ifndef NO_LAYER3
#if (defined OPT_3DNOW_VINTAGE || defined OPT_3DNOWEXT_VINTAGE || defined OPT_SSE || defined OPT_X86_64 || defined OPT_AVX || defined OPT_NEON || defined OPT_NEON64)
fr->cpu_opts.the_dct36 = INT123_dct36;
#endif
#endif
#endif
/* covers any i386+ cpu; they actually differ only in the INT123_synth_1to1 function, mostly... */
#ifdef OPT_X86
if(cpu_i586(fr->cpu_flags))
......@@ -523,11 +516,6 @@ int INT123_frame_cpu_opt(mpg123_handle *fr, const char* cpu)
{
chosen = dn_sse;
fr->cpu_opts.type = sse;
#ifdef OPT_MULTI
# ifndef NO_LAYER3
/* if(cpu_fast_sse(fr->cpu_flags)) */ fr->cpu_opts.the_dct36 = INT123_dct36_sse;
# endif
#endif
# ifndef NO_16BIT
fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_sse;
# ifdef ACCURATE_ROUNDING
......@@ -590,11 +578,6 @@ int INT123_frame_cpu_opt(mpg123_handle *fr, const char* cpu)
{
chosen = dn_dreidnowext_vintage;
fr->cpu_opts.type = dreidnowext_vintage;
#ifdef OPT_MULTI
# ifndef NO_LAYER3
fr->cpu_opts.the_dct36 = INT123_dct36_3dnowext;
# endif
#endif
# ifndef NO_16BIT
fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_3dnowext;
# endif
......@@ -619,11 +602,6 @@ int INT123_frame_cpu_opt(mpg123_handle *fr, const char* cpu)
{
chosen = dn_dreidnow_vintage;
fr->cpu_opts.type = dreidnow_vintage;
#ifdef OPT_MULTI
# ifndef NO_LAYER3
fr->cpu_opts.the_dct36 = INT123_dct36_3dnow;
# endif
#endif
# ifndef NO_16BIT
fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_3dnow;
# endif
......@@ -723,11 +701,6 @@ int INT123_frame_cpu_opt(mpg123_handle *fr, const char* cpu)
{
chosen = "x86-64 (AVX)";
fr->cpu_opts.type = avx;
#ifdef OPT_MULTI
# ifndef NO_LAYER3
fr->cpu_opts.the_dct36 = INT123_dct36_avx;
# endif
#endif
# ifndef NO_16BIT
fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_avx;
fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_avx;
......@@ -749,11 +722,6 @@ int INT123_frame_cpu_opt(mpg123_handle *fr, const char* cpu)
{
chosen = "x86-64 (SSE)";
fr->cpu_opts.type = x86_64;
#ifdef OPT_MULTI
# ifndef NO_LAYER3
fr->cpu_opts.the_dct36 = INT123_dct36_x86_64;
# endif
#endif
# ifndef NO_16BIT
fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_x86_64;
fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_x86_64;
......@@ -796,11 +764,6 @@ int INT123_frame_cpu_opt(mpg123_handle *fr, const char* cpu)
{
chosen = dn_neon;
fr->cpu_opts.type = neon;
#ifdef OPT_MULTI
# ifndef NO_LAYER3
fr->cpu_opts.the_dct36 = INT123_dct36_neon;
# endif
#endif
# ifndef NO_16BIT
fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_neon;
fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_neon;
......@@ -834,11 +797,6 @@ int INT123_frame_cpu_opt(mpg123_handle *fr, const char* cpu)
{
chosen = dn_neon64;
fr->cpu_opts.type = neon64;
#ifdef OPT_MULTI
# ifndef NO_LAYER3
fr->cpu_opts.the_dct36 = INT123_dct36_neon64;
# endif
#endif
# ifndef NO_16BIT
fr->synths.plain[r_1to1][f_16] = INT123_synth_1to1_neon64;
fr->synths.stereo[r_1to1][f_16] = INT123_synth_1to1_stereo_neon64;
......@@ -897,6 +855,10 @@ int INT123_frame_cpu_opt(mpg123_handle *fr, const char* cpu)
# endif
# endif
#ifdef OPT_THE_DCT36
INT123_dct36_choose(fr);
#endif
#ifdef OPT_DITHER
if(done && dithered)
{
......
......@@ -364,19 +364,16 @@ extern const int INT123_costab_mmxsse[];
#endif
#endif
/*
Now come two blocks of standard definitions for multi-decoder mode and single-decoder mode.
Most stuff is so automatic that it's indeed generated by some inline shell script.
Remember to use these scripts when possible, instead of direct repetitive hacking.
*/
#ifdef OPT_MULTI
# define defopt nodec
# ifndef NO_LAYER3
# if (defined OPT_3DNOW_VINTAGE || defined OPT_3DNOWEXT_VINTAGE || defined OPT_SSE || defined OPT_X86_64 || defined OPT_AVX || defined OPT_NEON || defined OPT_NEON64)
# define OPT_THE_DCT36
# define opt_dct36(fr) ((fr)->cpu_opts.the_dct36)
# endif
# endif
#endif /* OPT_MULTI else */
......
......@@ -30,7 +30,7 @@
#include "mpeghead.h"
#include "debug.h"
#include "../common/debug.h"
#define bsbufid(fr) (fr)->bsbuf==(fr)->bsspace[0] ? 0 : ((fr)->bsbuf==fr->bsspace[1] ? 1 : ( (fr)->bsbuf==(fr)->bsspace[0]+512 ? 2 : ((fr)->bsbuf==fr->bsspace[1]+512 ? 3 : -1) ) )
......
......@@ -11,7 +11,7 @@
#include "mpg123lib_intern.h"
#include "debug.h"
#include "../common/debug.h"
static int stream_init(mpg123_handle *fr);
static int64_t get_fileinfo(mpg123_handle *);
......@@ -526,7 +526,7 @@ static struct buffy* bc_alloc(struct bufferchain *bc, size_t size)
buf->next = NULL; /* That shall be set to a sensible value later. */
buf->size = 0;
--bc->pool_fill;
debug2("bc_alloc: picked %p from pool (fill now %"SIZE_P")", (void*)buf, (size_p)bc->pool_fill);
debug2("bc_alloc: picked %p from pool (fill now %zu)", (void*)buf, bc->pool_fill);
return buf;
}
else return buffy_new(size, bc->bufblock);
......
......@@ -10,9 +10,9 @@
#include "mpg123lib_intern.h"
#include "config.h"
#include "mpg123.h"
#include "compat.h"
#include "../compat/compat.h"
#include <string.h>
#include "debug.h"
#include "../common/debug.h"
mpg123_string* attribute_align_arg mpg123_new_string(const char *val)
{
......
......@@ -10,8 +10,8 @@
#ifdef OPT_GENERIC_DITHER
#define FORCE_ACCURATE
#endif
#include "sample.h"
#include "debug.h"
#include "../common/sample.h"
#include "../common/debug.h"
/*
Part 1: All synth functions that produce signed short.
......
......@@ -7,8 +7,8 @@
*/
#include "mpg123lib_intern.h"
#include "sample.h"
#include "debug.h"
#include "../common/sample.h"
#include "../common/debug.h"
/*
Part 2: All synth functions that produce 8bit output.
......
......@@ -7,8 +7,8 @@
*/
#include "mpg123lib_intern.h"
#include "sample.h"
#include "debug.h"
#include "../common/sample.h"
#include "../common/debug.h"
#ifdef REAL_IS_FIXED
#error "Do not build this file with fixed point math!"
......
......@@ -7,8 +7,8 @@
*/
#include "mpg123lib_intern.h"
#include "sample.h"
#include "debug.h"
#include "../common/sample.h"
#include "../common/debug.h"
#ifdef REAL_IS_FIXED
#error "Do not build this file with fixed point math!"
......
......@@ -7,7 +7,7 @@
*/
#include "mpg123lib_intern.h"
#include "debug.h"
#include "../common/debug.h"
// The (normally precomputed) cos tables.
#include "costabs.h"
......
......@@ -16,7 +16,7 @@
// only single spaces as separator to ease parsing by build scripts
#define MPG123_MAJOR 1
#define MPG123_MINOR 32
#define MPG123_PATCH 2
#define MPG123_PATCH 5
// Don't get too wild with that to avoid confusing m4. No brackets.
// Also, it should fit well into a sane file name for the tarball.
#define MPG123_SUFFIX ""
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment