1
0
mirror of https://github.com/nu774/fdkaac.git synced 2025-06-05 23:29:14 +02:00

5 Commits

5 changed files with 41 additions and 7 deletions

View File

@ -12,7 +12,7 @@ fdkaac_SOURCES = \
src/wav_reader.c src/wav_reader.c
fdkaac_LDADD = \ fdkaac_LDADD = \
@LIBICONV@ -lm @LIBICONV@ -lfdk-aac -lm
if FDK_PLATFORM_POSIX if FDK_PLATFORM_POSIX
fdkaac_SOURCES += \ fdkaac_SOURCES += \
@ -31,6 +31,10 @@ if FDK_NO_GETOPT_LONG
endif endif
EXTRA_DIST = \ EXTRA_DIST = \
m4/.gitkeep \
src/*.h \ src/*.h \
missings/*.c \ missings/*.c \
missings/*.h missings/*.h \
MSVC/*.vcxproj \
MSVC/*.vcxproj.filters \
MSVC/*.sln

View File

@ -35,7 +35,7 @@ AC_FUNC_FSEEKO
AC_CHECK_FUNCS([gettimeofday nl_langinfo strdup]) AC_CHECK_FUNCS([gettimeofday nl_langinfo strdup])
AC_CHECK_FUNC(getopt_long) AC_CHECK_FUNC(getopt_long)
AM_CONDITIONAL([FDK_NO_GETOPT_LONG],[test "$ac_cv_func_getopt_long" != "yes"]) AM_CONDITIONAL([FDK_NO_GETOPT_LONG],[test "$ac_cv_func_getopt_long" != "yes"])
AC_SEARCH_LIBS([aacEncOpen],[fdk-aac]) AC_SEARCH_LIBS([aacEncOpen],[fdk-aac],[],[],[])
AC_CANONICAL_HOST AC_CANONICAL_HOST

View File

@ -34,6 +34,7 @@ inline int lrint(double x)
# endif # endif
#endif #endif
static
inline double pcm_clip(double n, double min_value, double max_value) inline double pcm_clip(double n, double min_value, double max_value)
{ {
if (n < min_value) if (n < min_value)
@ -42,6 +43,7 @@ inline double pcm_clip(double n, double min_value, double max_value)
return max_value; return max_value;
return n; return n;
} }
static
inline float pcm_i2f(int32_t n) inline float pcm_i2f(int32_t n)
{ {
union { union {
@ -51,6 +53,7 @@ inline float pcm_i2f(int32_t n)
u.ivalue = n; u.ivalue = n;
return u.fvalue; return u.fvalue;
} }
static
inline double pcm_i2d(int64_t n) inline double pcm_i2d(int64_t n)
{ {
union { union {
@ -60,99 +63,123 @@ inline double pcm_i2d(int64_t n)
u.ivalue = n; u.ivalue = n;
return u.fvalue; return u.fvalue;
} }
static
inline int16_t pcm_quantize_s32(int32_t n) inline int16_t pcm_quantize_s32(int32_t n)
{ {
n = ((n >> 15) + 1) >> 1; n = ((n >> 15) + 1) >> 1;
return (n == 0x8000) ? 0x7fff : n; return (n == 0x8000) ? 0x7fff : n;
} }
static
inline int16_t pcm_quantize_f64(double v) inline int16_t pcm_quantize_f64(double v)
{ {
return (int16_t)lrint(pcm_clip(v * 32768.0, -32768.0, 32767.0)); return (int16_t)lrint(pcm_clip(v * 32768.0, -32768.0, 32767.0));
} }
static
inline int16_t pcm_s8_to_s16(int8_t n) inline int16_t pcm_s8_to_s16(int8_t n)
{ {
return n << 8; return n << 8;
} }
static
inline int16_t pcm_u8_to_s16(uint8_t n) inline int16_t pcm_u8_to_s16(uint8_t n)
{ {
return (n << 8) ^ 0x8000; return (n << 8) ^ 0x8000;
} }
static
inline int16_t pcm_s16le_to_s16(int16_t n) inline int16_t pcm_s16le_to_s16(int16_t n)
{ {
return m4af_ltoh16(n); return m4af_ltoh16(n);
} }
static
inline int16_t pcm_s16be_to_s16(int16_t n) inline int16_t pcm_s16be_to_s16(int16_t n)
{ {
return m4af_btoh16(n); return m4af_btoh16(n);
} }
static
inline int16_t pcm_u16le_to_s16(uint16_t n) inline int16_t pcm_u16le_to_s16(uint16_t n)
{ {
return m4af_ltoh16(n) ^ 0x8000; return m4af_ltoh16(n) ^ 0x8000;
} }
static
inline int16_t pcm_u16be_to_s16(uint16_t n) inline int16_t pcm_u16be_to_s16(uint16_t n)
{ {
return m4af_btoh16(n) ^ 0x8000; return m4af_btoh16(n) ^ 0x8000;
} }
static
inline int32_t pcm_s24le_to_s32(uint8_t *p) inline int32_t pcm_s24le_to_s32(uint8_t *p)
{ {
return p[0]<<8 | p[1]<<16 | p[2]<<24; return p[0]<<8 | p[1]<<16 | p[2]<<24;
} }
static
inline int32_t pcm_s24be_to_s32(uint8_t *p) inline int32_t pcm_s24be_to_s32(uint8_t *p)
{ {
return p[0]<<24 | p[1]<<16 | p[2]<<8; return p[0]<<24 | p[1]<<16 | p[2]<<8;
} }
static
inline int32_t pcm_u24le_to_s32(uint8_t *p) inline int32_t pcm_u24le_to_s32(uint8_t *p)
{ {
return pcm_s24le_to_s32(p) ^ 0x80000000; return pcm_s24le_to_s32(p) ^ 0x80000000;
} }
static
inline int32_t pcm_u24be_to_s32(uint8_t *p) inline int32_t pcm_u24be_to_s32(uint8_t *p)
{ {
return pcm_s24be_to_s32(p) ^ 0x80000000; return pcm_s24be_to_s32(p) ^ 0x80000000;
} }
static
inline int16_t pcm_s24le_to_s16(uint8_t *p) inline int16_t pcm_s24le_to_s16(uint8_t *p)
{ {
return pcm_quantize_s32(pcm_s24le_to_s32(p)); return pcm_quantize_s32(pcm_s24le_to_s32(p));
} }
static
inline int16_t pcm_s24be_to_s16(uint8_t *p) inline int16_t pcm_s24be_to_s16(uint8_t *p)
{ {
return pcm_quantize_s32(pcm_s24be_to_s32(p)); return pcm_quantize_s32(pcm_s24be_to_s32(p));
} }
static
inline int16_t pcm_u24le_to_s16(uint8_t *p) inline int16_t pcm_u24le_to_s16(uint8_t *p)
{ {
return pcm_quantize_s32(pcm_u24le_to_s32(p)); return pcm_quantize_s32(pcm_u24le_to_s32(p));
} }
static
inline int16_t pcm_u24be_to_s16(uint8_t *p) inline int16_t pcm_u24be_to_s16(uint8_t *p)
{ {
return pcm_quantize_s32(pcm_u24be_to_s32(p)); return pcm_quantize_s32(pcm_u24be_to_s32(p));
} }
static
inline int16_t pcm_s32le_to_s16(int32_t n) inline int16_t pcm_s32le_to_s16(int32_t n)
{ {
return pcm_quantize_s32(m4af_ltoh32(n)); return pcm_quantize_s32(m4af_ltoh32(n));
} }
static
inline int16_t pcm_s32be_to_s16(int32_t n) inline int16_t pcm_s32be_to_s16(int32_t n)
{ {
return pcm_quantize_s32(m4af_btoh32(n)); return pcm_quantize_s32(m4af_btoh32(n));
} }
static
inline int16_t pcm_u32le_to_s16(int32_t n) inline int16_t pcm_u32le_to_s16(int32_t n)
{ {
return pcm_quantize_s32(m4af_ltoh32(n) ^ 0x80000000); return pcm_quantize_s32(m4af_ltoh32(n) ^ 0x80000000);
} }
static
inline int16_t pcm_u32be_to_s16(int32_t n) inline int16_t pcm_u32be_to_s16(int32_t n)
{ {
return pcm_quantize_s32(m4af_btoh32(n) ^ 0x80000000); return pcm_quantize_s32(m4af_btoh32(n) ^ 0x80000000);
} }
static
inline int16_t pcm_f32le_to_s16(int32_t n) inline int16_t pcm_f32le_to_s16(int32_t n)
{ {
return pcm_quantize_f64(pcm_i2f(m4af_ltoh32(n))); return pcm_quantize_f64(pcm_i2f(m4af_ltoh32(n)));
} }
static
inline int16_t pcm_f32be_to_s16(int32_t n) inline int16_t pcm_f32be_to_s16(int32_t n)
{ {
return pcm_quantize_f64(pcm_i2f(m4af_btoh32(n))); return pcm_quantize_f64(pcm_i2f(m4af_btoh32(n)));
} }
static
inline int16_t pcm_f64le_to_s16(int64_t n) inline int16_t pcm_f64le_to_s16(int64_t n)
{ {
return pcm_quantize_f64(pcm_i2d(m4af_ltoh64(n))); return pcm_quantize_f64(pcm_i2d(m4af_ltoh64(n)));
} }
static
inline int16_t pcm_f64be_to_s16(int64_t n) inline int16_t pcm_f64be_to_s16(int64_t n)
{ {
return pcm_quantize_f64(pcm_i2d(m4af_btoh64(n))); return pcm_quantize_f64(pcm_i2d(m4af_btoh64(n)));

View File

@ -33,13 +33,15 @@
static static
int read_callback(void *cookie, void *data, uint32_t size) int read_callback(void *cookie, void *data, uint32_t size)
{ {
return fread(data, 1, size, (FILE*)cookie); size_t rc = fread(data, 1, size, (FILE*)cookie);
return ferror((FILE*)cookie) ? -1 : (int)rc;
} }
static static
int write_callback(void *cookie, const void *data, uint32_t size) int write_callback(void *cookie, const void *data, uint32_t size)
{ {
return fwrite(data, 1, size, (FILE*)cookie); size_t rc = fwrite(data, 1, size, (FILE*)cookie);
return ferror((FILE*)cookie) ? -1 : (int)rc;
} }
static static
@ -297,7 +299,8 @@ int write_sample(FILE *ofp, m4af_writer_t *m4af,
const void *data, uint32_t size, uint32_t duration) const void *data, uint32_t size, uint32_t duration)
{ {
if (!m4af) { if (!m4af) {
if (fwrite(data, 1, size, ofp) < 0) { fwrite(data, 1, size, ofp);
if (ferror(ofp)) {
fprintf(stderr, "ERROR: fwrite(): %s\n", strerror(errno)); fprintf(stderr, "ERROR: fwrite(): %s\n", strerror(errno));
return -1; return -1;
} }

View File

@ -1,4 +1,4 @@
#ifndef VERSION_H #ifndef VERSION_H
#define VERSION_H #define VERSION_H
const char *fdkaac_version = "0.0.5"; const char *fdkaac_version = "0.0.7";
#endif #endif