diff --git a/CMakeLists.txt b/CMakeLists.txt index 85f6b4c2bc..febe3663ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2215,6 +2215,9 @@ add_library(${CoreLibName} ${CoreLinkType} Core/HLE/scePauth.h Core/HW/SimpleAudioDec.cpp Core/HW/SimpleAudioDec.h + Core/HW/Atrac3Standalone.cpp + Core/HW/Atrac3Standalone.h + Core/HW/SimpleAudioDec.h Core/HW/AsyncIOManager.cpp Core/HW/AsyncIOManager.h Core/HW/BufferQueue.cpp diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 87ffa7fa5c..c7a6b6e2ab 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -530,6 +530,7 @@ EXEC_AND_LIB_FILES := \ $(SRC)/Core/ELF/PrxDecrypter.cpp \ $(SRC)/Core/ELF/ParamSFO.cpp \ $(SRC)/Core/HW/SimpleAudioDec.cpp \ + $(SRC)/Core/HW/Atrac3Standalone.cpp \ $(SRC)/Core/HW/AsyncIOManager.cpp \ $(SRC)/Core/HW/BufferQueue.cpp \ $(SRC)/Core/HW/Camera.cpp \ diff --git a/ext/at3_standalone/compat.h b/ext/at3_standalone/compat.h index 52f7263fa9..2632af72c9 100644 --- a/ext/at3_standalone/compat.h +++ b/ext/at3_standalone/compat.h @@ -2,24 +2,6 @@ // Compat hacks -#define CONFIG_MEMORY_POISONING 0 -#define CONFIG_HARDCODED_TABLES 0 -#define CONFIG_ME_CMP 0 -#define HWACCEL_CODEC_CAP_EXPERIMENTAL 0 -#define HAVE_THREADS 0 -#define CONFIG_FRAME_THREAD_ENCODER 0 -#define CONFIG_GRAY 0 -#define NULL_IF_CONFIG_SMALL(x) NULL -#define ARCH_AARCH64 0 -#define ARCH_ARM 0 -#define ARCH_PPC 0 -#define ARCH_X86 0 -#define HAVE_MIPSFPU 0 -#define FF_API_AVPACKET_OLD_API 1 -#define FF_DISABLE_DEPRECATION_WARNINGS -#define FF_ENABLE_DEPRECATION_WARNINGS -#define CONFIG_FFT 1 - #if defined(__GNUC__) #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v #define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v @@ -33,16 +15,11 @@ #define LOCAL_ALIGNED(bits, type, name, subscript) type name subscript #define av_restrict -#define av_always_inline __forceinline -#define av_const #define av_alias #define av_unused -#define av_pure -#define av_warn_unused_result #define av_assert0(cond) #define av_assert1(cond) #define av_assert2(cond) -#define attribute_deprecated #define av_printf_format(a,b) #define avpriv_report_missing_feature(...) @@ -117,14 +94,13 @@ size_t av_strlcpy(char *dst, const char *src, size_t size); /** * Locale-independent conversion of ASCII characters to uppercase. */ -static inline av_const int av_toupper(int c) +static inline int av_toupper(int c) { if (c >= 'a' && c <= 'z') c ^= 0x20; return c; } - #define AV_BSWAP16C(x) (((x) << 8 & 0xff00) | ((x) >> 8 & 0x00ff)) #define AV_BSWAP32C(x) (AV_BSWAP16C(x) << 16 | AV_BSWAP16C((x) >> 16)) #define av_be2ne32(x) AV_BSWAP32C((x)) diff --git a/ext/at3_standalone/fft.cpp b/ext/at3_standalone/fft.cpp index e4c7d67f54..10914d0504 100644 --- a/ext/at3_standalone/fft.cpp +++ b/ext/at3_standalone/fft.cpp @@ -40,7 +40,6 @@ void ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input); void ff_mdct_calc_c(FFTContext *s, FFTSample *output, const FFTSample *input); /* cos(2*pi*x/n) for 0<=x<=n/4, followed by its reverse */ -#if !CONFIG_HARDCODED_TABLES COSTABLE(16); COSTABLE(32); COSTABLE(64); @@ -54,7 +53,7 @@ COSTABLE(8192); COSTABLE(16384); COSTABLE(32768); COSTABLE(65536); -#endif + FFTSample * const ff_cos_tabs[] = { NULL, NULL, NULL, NULL, ff_cos_16, @@ -88,7 +87,6 @@ static int split_radix_permutation(int i, int n, int inverse) void ff_init_ff_cos_tabs(int index) { -#if (!CONFIG_HARDCODED_TABLES) && (!FFT_FIXED_32) int i; int m = 1<> 8) & 0xFF] << 16 | diff --git a/ext/at3_standalone/get_bits.h b/ext/at3_standalone/get_bits.h index 2b915981ea..1be9576cd4 100644 --- a/ext/at3_standalone/get_bits.h +++ b/ext/at3_standalone/get_bits.h @@ -235,7 +235,7 @@ static inline unsigned int get_bits(GetBitContext *s, int n) /** * Read 0-25 bits. */ -static av_always_inline int get_bitsz(GetBitContext *s, int n) +static inline int get_bitsz(GetBitContext *s, int n) { return n ? get_bits(s, n) : 0; } @@ -398,43 +398,6 @@ void ff_free_vlc(VLC *vlc); SKIP_BITS(name, gb, n); \ } while (0) -#define GET_RL_VLC_INTERNAL(level, run, name, gb, table, bits, \ - max_depth, need_update) \ - do { \ - int n, nb_bits; \ - unsigned int index; \ - \ - index = SHOW_UBITS(name, gb, bits); \ - level = table[index].level; \ - n = table[index].len; \ - \ - if (max_depth > 1 && n < 0) { \ - SKIP_BITS(name, gb, bits); \ - if (need_update) { \ - UPDATE_CACHE(name, gb); \ - } \ - \ - nb_bits = -n; \ - \ - index = SHOW_UBITS(name, gb, nb_bits) + level; \ - level = table[index].level; \ - n = table[index].len; \ - if (max_depth > 2 && n < 0) { \ - LAST_SKIP_BITS(name, gb, nb_bits); \ - if (need_update) { \ - UPDATE_CACHE(name, gb); \ - } \ - nb_bits = -n; \ - \ - index = SHOW_UBITS(name, gb, nb_bits) + level; \ - level = table[index].level; \ - n = table[index].len; \ - } \ - } \ - run = table[index].run; \ - SKIP_BITS(name, gb, n); \ - } while (0) - /** * Parse a vlc code. * @param bits is the number of bits which will be read at once, must be @@ -443,7 +406,7 @@ void ff_free_vlc(VLC *vlc); * read the longest vlc code * = (max_vlc_length + bits - 1) / bits */ -static av_always_inline int get_vlc2(GetBitContext *s, VLC_TYPE (*table)[2], +static inline int get_vlc2(GetBitContext *s, VLC_TYPE (*table)[2], int bits, int max_depth) { int code; @@ -486,33 +449,11 @@ static inline type bytestream2_get_ ## name(GetByteContext *g) \ return 0; \ } \ return bytestream2_get_ ## name ## u(g); \ -} \ -static inline type bytestream2_peek_ ## name(GetByteContext *g) \ -{ \ - if (g->buffer_end - g->buffer < bytes) \ - return 0; \ - return read(g->buffer); \ } -DEF(uint64_t, le64, 8, AV_RL64, AV_WL64) DEF(unsigned int, le32, 4, AV_RL32, AV_WL32) DEF(unsigned int, le24, 3, AV_RL24, AV_WL24) DEF(unsigned int, le16, 2, AV_RL16, AV_WL16) -DEF(uint64_t, be64, 8, AV_RB64, AV_WB64) DEF(unsigned int, be32, 4, AV_RB32, AV_WB32) DEF(unsigned int, be24, 3, AV_RB24, AV_WB24) DEF(unsigned int, be16, 2, AV_RB16, AV_WB16) -DEF(unsigned int, byte, 1, AV_RB8, AV_WB8) - -# define bytestream2_get_ne16 bytestream2_get_le16 -# define bytestream2_get_ne24 bytestream2_get_le24 -# define bytestream2_get_ne32 bytestream2_get_le32 -# define bytestream2_get_ne64 bytestream2_get_le64 -# define bytestream2_get_ne16u bytestream2_get_le16u -# define bytestream2_get_ne24u bytestream2_get_le24u -# define bytestream2_get_ne32u bytestream2_get_le32u -# define bytestream2_get_ne64u bytestream2_get_le64u -# define bytestream2_peek_ne16 bytestream2_peek_le16 -# define bytestream2_peek_ne24 bytestream2_peek_le24 -# define bytestream2_peek_ne32 bytestream2_peek_le32 -# define bytestream2_peek_ne64 bytestream2_peek_le64 diff --git a/ext/at3_standalone/intreadwrite.h b/ext/at3_standalone/intreadwrite.h index f7683aaa7c..21ea176213 100644 --- a/ext/at3_standalone/intreadwrite.h +++ b/ext/at3_standalone/intreadwrite.h @@ -402,162 +402,4 @@ union unaligned_16 { uint16_t l; } __attribute__((packed)) av_alias; } while(0) #endif -#ifndef AV_RB48 -# define AV_RB48(x) \ - (((uint64_t)((const uint8_t*)(x))[0] << 40) | \ - ((uint64_t)((const uint8_t*)(x))[1] << 32) | \ - ((uint64_t)((const uint8_t*)(x))[2] << 24) | \ - ((uint64_t)((const uint8_t*)(x))[3] << 16) | \ - ((uint64_t)((const uint8_t*)(x))[4] << 8) | \ - (uint64_t)((const uint8_t*)(x))[5]) -#endif -#ifndef AV_WB48 -# define AV_WB48(p, darg) do { \ - uint64_t d = (darg); \ - ((uint8_t*)(p))[5] = (d); \ - ((uint8_t*)(p))[4] = (d)>>8; \ - ((uint8_t*)(p))[3] = (d)>>16; \ - ((uint8_t*)(p))[2] = (d)>>24; \ - ((uint8_t*)(p))[1] = (d)>>32; \ - ((uint8_t*)(p))[0] = (d)>>40; \ - } while(0) -#endif - -#ifndef AV_RL48 -# define AV_RL48(x) \ - (((uint64_t)((const uint8_t*)(x))[5] << 40) | \ - ((uint64_t)((const uint8_t*)(x))[4] << 32) | \ - ((uint64_t)((const uint8_t*)(x))[3] << 24) | \ - ((uint64_t)((const uint8_t*)(x))[2] << 16) | \ - ((uint64_t)((const uint8_t*)(x))[1] << 8) | \ - (uint64_t)((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL48 -# define AV_WL48(p, darg) do { \ - uint64_t d = (darg); \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[2] = (d)>>16; \ - ((uint8_t*)(p))[3] = (d)>>24; \ - ((uint8_t*)(p))[4] = (d)>>32; \ - ((uint8_t*)(p))[5] = (d)>>40; \ - } while(0) -#endif - -/* - * The AV_[RW]NA macros access naturally aligned data - * in a type-safe way. - */ - -#define AV_RNA(s, p) (((const av_alias##s*)(p))->u##s) -#define AV_WNA(s, p, v) (((av_alias##s*)(p))->u##s = (v)) - -#ifndef AV_RN16A -# define AV_RN16A(p) AV_RNA(16, p) -#endif - -#ifndef AV_RN32A -# define AV_RN32A(p) AV_RNA(32, p) -#endif - -#ifndef AV_RN64A -# define AV_RN64A(p) AV_RNA(64, p) -#endif - -#ifndef AV_WN16A -# define AV_WN16A(p, v) AV_WNA(16, p, v) -#endif - -#ifndef AV_WN32A -# define AV_WN32A(p, v) AV_WNA(32, p, v) -#endif - -#ifndef AV_WN64A -# define AV_WN64A(p, v) AV_WNA(64, p, v) -#endif - -/* - * The AV_COPYxxU macros are suitable for copying data to/from unaligned - * memory locations. - */ - -#define AV_COPYU(n, d, s) AV_WN##n(d, AV_RN##n(s)); - -#ifndef AV_COPY16U -# define AV_COPY16U(d, s) AV_COPYU(16, d, s) -#endif - -#ifndef AV_COPY32U -# define AV_COPY32U(d, s) AV_COPYU(32, d, s) -#endif - -#ifndef AV_COPY64U -# define AV_COPY64U(d, s) AV_COPYU(64, d, s) -#endif - -#ifndef AV_COPY128U -# define AV_COPY128U(d, s) \ - do { \ - AV_COPY64U(d, s); \ - AV_COPY64U((char *)(d) + 8, (const char *)(s) + 8); \ - } while(0) -#endif - -/* Parameters for AV_COPY*, AV_SWAP*, AV_ZERO* must be - * naturally aligned. They may be implemented using MMX, - * so emms_c() must be called before using any float code - * afterwards. - */ - -#define AV_COPY(n, d, s) \ - (((av_alias##n*)(d))->u##n = ((const av_alias##n*)(s))->u##n) - -#ifndef AV_COPY16 -# define AV_COPY16(d, s) AV_COPY(16, d, s) -#endif - -#ifndef AV_COPY32 -# define AV_COPY32(d, s) AV_COPY(32, d, s) -#endif - -#ifndef AV_COPY64 -# define AV_COPY64(d, s) AV_COPY(64, d, s) -#endif - -#ifndef AV_COPY128 -# define AV_COPY128(d, s) \ - do { \ - AV_COPY64(d, s); \ - AV_COPY64((char*)(d)+8, (char*)(s)+8); \ - } while(0) -#endif - -#define AV_SWAP(n, a, b) FFSWAP(av_alias##n, *(av_alias##n*)(a), *(av_alias##n*)(b)) - -#ifndef AV_SWAP64 -# define AV_SWAP64(a, b) AV_SWAP(64, a, b) -#endif - -#define AV_ZERO(n, d) (((av_alias##n*)(d))->u##n = 0) - -#ifndef AV_ZERO16 -# define AV_ZERO16(d) AV_ZERO(16, d) -#endif - -#ifndef AV_ZERO32 -# define AV_ZERO32(d) AV_ZERO(32, d) -#endif - -#ifndef AV_ZERO64 -# define AV_ZERO64(d) AV_ZERO(64, d) -#endif - -#ifndef AV_ZERO128 -# define AV_ZERO128(d) \ - do { \ - AV_ZERO64(d); \ - AV_ZERO64((char*)(d)+8); \ - } while(0) -#endif - #endif /* AVUTIL_INTREADWRITE_H */ diff --git a/ext/at3_standalone/mathematics.h b/ext/at3_standalone/mathematics.h index 09eba9a9d4..6ebe8226da 100644 --- a/ext/at3_standalone/mathematics.h +++ b/ext/at3_standalone/mathematics.h @@ -70,7 +70,7 @@ int av_log2_16bit(unsigned int v); */ /* We use the De-Bruijn method outlined in: * http://supertech.csail.mit.edu/papers/debruijn.pdf. */ -static av_always_inline av_const int ff_ctz_c(int v) +static inline int ff_ctz_c(int v) { static const uint8_t debruijn_ctz32[32] = { 0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, @@ -84,7 +84,7 @@ static av_always_inline av_const int ff_ctz_c(int v) #define ff_ctzll ff_ctzll_c /* We use the De-Bruijn method outlined in: * http://supertech.csail.mit.edu/papers/debruijn.pdf. */ -static av_always_inline av_const int ff_ctzll_c(long long v) +static inline int ff_ctzll_c(long long v) { static const uint8_t debruijn_ctz64[64] = { 0, 1, 2, 53, 3, 7, 54, 27, 4, 38, 41, 8, 34, 55, 48, 28,