diff options
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | plugins/ffap/Makefile.am | 22 | ||||
-rw-r--r-- | plugins/ffap/dsputil_yasm.asm | 423 | ||||
-rw-r--r-- | plugins/ffap/ffap.c | 132 | ||||
-rw-r--r-- | plugins/ffap/x86inc.asm | 625 | ||||
-rw-r--r-- | po/deadbeef.pot | 1711 | ||||
-rwxr-xr-x | yasmwrapper.sh | 10 |
7 files changed, 1088 insertions, 1841 deletions
diff --git a/configure.ac b/configure.ac index 64874ab7..85a6593f 100644 --- a/configure.ac +++ b/configure.ac @@ -35,6 +35,7 @@ case "$host" in i386-*-* | i486-*-* | i586-*-* | i686-*-* | i86pc-*-*) AC_DEFINE(ARCH_X86_32, 1, [architecture is x86]) LIB="../deadbeef-deps/lib-x86-32" + YASM_FLAGS="-f elf -D ARCH_X86_32 -m x86" ;; x86_64-apple-*) AC_DEFINE(ARCH_X86_64_OSX, 1, [architecture is x86_64 for OSX]) @@ -43,6 +44,7 @@ case "$host" in x86_64-*-* | amd64-*-*) AC_DEFINE(ARCH_X86_64, 1, [architecture is x86_64]) LIB="../deadbeef-deps/lib-x86-64" + YASM_FLAGS="-f elf -D ARCH_X86_64 -m amd64" ;; powerpc-*-* ) AC_DEFINE(ARCH_PPC_32, 1, [architecture is ppc32]) @@ -111,6 +113,9 @@ if test "x$enable_staticlink" != "xno" ; then STATICLINK=yes fi +dnl check for yasm +AC_CHECK_PROG(HAVE_YASM, yasm, yes, no) + dnl check for libdl AC_CHECK_LIB([dl], [main], [HAVE_DL=yes;DL_LIBS="-ldl";AC_SUBST(DL_LIBS)]) @@ -585,6 +590,7 @@ AM_CONDITIONAL(HAVE_CONVERTER, test "x$HAVE_CONVERTER" = "xyes") AM_CONDITIONAL(HAVE_IMLIB2, test "x$HAVE_IMLIB2" = "xyes") AM_CONDITIONAL(HAVE_JPEG, test "x$HAVE_JPEG" = "xyes") AM_CONDITIONAL(HAVE_PNG, test "x$HAVE_PNG" = "xyes") +AM_CONDITIONAL(HAVE_YASM, test "x$HAVE_YASM" = "xyes") AC_SUBST(PLUGINS_DIRS) diff --git a/plugins/ffap/Makefile.am b/plugins/ffap/Makefile.am index a3671fbe..16110b94 100644 --- a/plugins/ffap/Makefile.am +++ b/plugins/ffap/Makefile.am @@ -1,8 +1,26 @@ if HAVE_FFAP ffapdir = $(libdir)/$(PACKAGE) pkglib_LTLIBRARIES = ffap.la -ffap_la_SOURCES = ffap.c + +topsrcdir = @top_srcdir@ +EXTRA_PROGRAMS = foo +YASM=$(topsrcdir)/yasmwrapper.sh +SUFFIXES = .asm + +if HAVE_YASM +INTEL_SRC=dsputil_yasm.asm +YASM_FLAGS="-f elf -D ARCH_X86_64 -m amd64" +ffap_la_DEPENDENCIES=dsputil_yasm.lo +endif + +ffap_la_SOURCES = ffap.c $(INTEL_SRC) + +if HAVE_YASM +.asm.lo: + $(LIBTOOL) --tag=CC --mode=compile $(YASM) $(YASM_FLAGS) -o $@ $< +endif + ffap_la_LDFLAGS = -module -AM_CFLAGS = $(CFLAGS) -std=c99 +AM_CFLAGS = $(CFLAGS) -fPIC -std=c99 endif diff --git a/plugins/ffap/dsputil_yasm.asm b/plugins/ffap/dsputil_yasm.asm new file mode 100644 index 00000000..e2478a48 --- /dev/null +++ b/plugins/ffap/dsputil_yasm.asm @@ -0,0 +1,423 @@ +;****************************************************************************** +;* MMX optimized DSP utils +;* Copyright (c) 2008 Loren Merritt +;* +;* This file is part of FFmpeg. +;* +;* FFmpeg is free software; you can redistribute it and/or +;* modify it under the terms of the GNU Lesser General Public +;* License as published by the Free Software Foundation; either +;* version 2.1 of the License, or (at your option) any later version. +;* +;* FFmpeg is distributed in the hope that it will be useful, +;* but WITHOUT ANY WARRANTY; without even the implied warranty of +;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;* Lesser General Public License for more details. +;* +;* You should have received a copy of the GNU Lesser General Public +;* License along with FFmpeg; if not, write to the Free Software +;* 51, Inc., Foundation Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +;****************************************************************************** + +%include "x86inc.asm" + +SECTION_RODATA +pb_f: times 16 db 15 +pb_zzzzzzzz77777777: times 8 db -1 +pb_7: times 8 db 7 +pb_zzzz3333zzzzbbbb: db -1,-1,-1,-1,3,3,3,3,-1,-1,-1,-1,11,11,11,11 +pb_zz11zz55zz99zzdd: db -1,-1,1,1,-1,-1,5,5,-1,-1,9,9,-1,-1,13,13 + +section .text align=16 + +%macro PSWAPD_SSE 2 + pshufw %1, %2, 0x4e +%endmacro +%macro PSWAPD_3DN1 2 + movq %1, %2 + psrlq %1, 32 + punpckldq %1, %2 +%endmacro + +%macro FLOAT_TO_INT16_INTERLEAVE6 1 +; void ff_float_to_int16_interleave6_sse(int16_t *dst, const float **src, int len) +cglobal float_to_int16_interleave6_%1, 2,7,0, dst, src, src1, src2, src3, src4, src5 +%ifdef ARCH_X86_64 + %define lend r10d + mov lend, r2d +%else + %define lend dword r2m +%endif + mov src1q, [srcq+1*gprsize] + mov src2q, [srcq+2*gprsize] + mov src3q, [srcq+3*gprsize] + mov src4q, [srcq+4*gprsize] + mov src5q, [srcq+5*gprsize] + mov srcq, [srcq] + sub src1q, srcq + sub src2q, srcq + sub src3q, srcq + sub src4q, srcq + sub src5q, srcq +.loop: + cvtps2pi mm0, [srcq] + cvtps2pi mm1, [srcq+src1q] + cvtps2pi mm2, [srcq+src2q] + cvtps2pi mm3, [srcq+src3q] + cvtps2pi mm4, [srcq+src4q] + cvtps2pi mm5, [srcq+src5q] + packssdw mm0, mm3 + packssdw mm1, mm4 + packssdw mm2, mm5 + pswapd mm3, mm0 + punpcklwd mm0, mm1 + punpckhwd mm1, mm2 + punpcklwd mm2, mm3 + pswapd mm3, mm0 + punpckldq mm0, mm2 + punpckhdq mm2, mm1 + punpckldq mm1, mm3 + movq [dstq ], mm0 + movq [dstq+16], mm2 + movq [dstq+ 8], mm1 + add srcq, 8 + add dstq, 24 + sub lend, 2 + jg .loop + emms + RET +%endmacro ; FLOAT_TO_INT16_INTERLEAVE6 + +%define pswapd PSWAPD_SSE +FLOAT_TO_INT16_INTERLEAVE6 sse +%define cvtps2pi pf2id +%define pswapd PSWAPD_3DN1 +FLOAT_TO_INT16_INTERLEAVE6 3dnow +%undef pswapd +FLOAT_TO_INT16_INTERLEAVE6 3dn2 +%undef cvtps2pi + + + +%macro SCALARPRODUCT 1 +; int scalarproduct_int16(int16_t *v1, int16_t *v2, int order, int shift) +cglobal scalarproduct_int16_%1, 3,3,4, v1, v2, order, shift + shl orderq, 1 + add v1q, orderq + add v2q, orderq + neg orderq + movd m3, shiftm + pxor m2, m2 +.loop: + movu m0, [v1q + orderq] + movu m1, [v1q + orderq + mmsize] + pmaddwd m0, [v2q + orderq] + pmaddwd m1, [v2q + orderq + mmsize] + paddd m2, m0 + paddd m2, m1 + add orderq, mmsize*2 + jl .loop +%if mmsize == 16 + movhlps m0, m2 + paddd m2, m0 + psrad m2, m3 + pshuflw m0, m2, 0x4e +%else + psrad m2, m3 + pshufw m0, m2, 0x4e +%endif + paddd m2, m0 + movd eax, m2 + RET + +; int scalarproduct_and_madd_int16(int16_t *v1, int16_t *v2, int16_t *v3, int order, int mul) +cglobal scalarproduct_and_madd_int16_%1, 4,4,8, v1, v2, v3, order, mul + shl orderq, 1 + movd m7, mulm +%if mmsize == 16 + pshuflw m7, m7, 0 + punpcklqdq m7, m7 +%else + pshufw m7, m7, 0 +%endif + pxor m6, m6 + add v1q, orderq + add v2q, orderq + add v3q, orderq + neg orderq +.loop: + movu m0, [v2q + orderq] + movu m1, [v2q + orderq + mmsize] + mova m4, [v1q + orderq] + mova m5, [v1q + orderq + mmsize] + movu m2, [v3q + orderq] + movu m3, [v3q + orderq + mmsize] + pmaddwd m0, m4 + pmaddwd m1, m5 + pmullw m2, m7 + pmullw m3, m7 + paddd m6, m0 + paddd m6, m1 + paddw m2, m4 + paddw m3, m5 + mova [v1q + orderq], m2 + mova [v1q + orderq + mmsize], m3 + add orderq, mmsize*2 + jl .loop +%if mmsize == 16 + movhlps m0, m6 + paddd m6, m0 + pshuflw m0, m6, 0x4e +%else + pshufw m0, m6, 0x4e +%endif + paddd m6, m0 + movd eax, m6 + RET +%endmacro + +INIT_MMX +SCALARPRODUCT mmx2 +INIT_XMM +SCALARPRODUCT sse2 + +%macro SCALARPRODUCT_LOOP 1 +align 16 +.loop%1: + sub orderq, mmsize*2 +%if %1 + mova m1, m4 + mova m4, [v2q + orderq] + mova m0, [v2q + orderq + mmsize] + palignr m1, m0, %1 + palignr m0, m4, %1 + mova m3, m5 + mova m5, [v3q + orderq] + mova m2, [v3q + orderq + mmsize] + palignr m3, m2, %1 + palignr m2, m5, %1 +%else + mova m0, [v2q + orderq] + mova m1, [v2q + orderq + mmsize] + mova m2, [v3q + orderq] + mova m3, [v3q + orderq + mmsize] +%endif + %define t0 [v1q + orderq] + %define t1 [v1q + orderq + mmsize] +%ifdef ARCH_X86_64 + mova m8, t0 + mova m9, t1 + %define t0 m8 + %define t1 m9 +%endif + pmaddwd m0, t0 + pmaddwd m1, t1 + pmullw m2, m7 + pmullw m3, m7 + paddw m2, t0 + paddw m3, t1 + paddd m6, m0 + paddd m6, m1 + mova [v1q + orderq], m2 + mova [v1q + orderq + mmsize], m3 + jg .loop%1 +%if %1 + jmp .end +%endif +%endmacro + +; int scalarproduct_and_madd_int16(int16_t *v1, int16_t *v2, int16_t *v3, int order, int mul) +cglobal scalarproduct_and_madd_int16_ssse3, 4,5,10, v1, v2, v3, order, mul + shl orderq, 1 + movd m7, mulm + pshuflw m7, m7, 0 + punpcklqdq m7, m7 + pxor m6, m6 + mov r4d, v2d + and r4d, 15 + and v2q, ~15 + and v3q, ~15 + mova m4, [v2q + orderq] + mova m5, [v3q + orderq] + ; linear is faster than branch tree or jump table, because the branches taken are cyclic (i.e. predictable) + cmp r4d, 0 + je .loop0 + cmp r4d, 2 + je .loop2 + cmp r4d, 4 + je .loop4 + cmp r4d, 6 + je .loop6 + cmp r4d, 8 + je .loop8 + cmp r4d, 10 + je .loop10 + cmp r4d, 12 + je .loop12 +SCALARPRODUCT_LOOP 14 +SCALARPRODUCT_LOOP 12 +SCALARPRODUCT_LOOP 10 +SCALARPRODUCT_LOOP 8 +SCALARPRODUCT_LOOP 6 +SCALARPRODUCT_LOOP 4 +SCALARPRODUCT_LOOP 2 +SCALARPRODUCT_LOOP 0 +.end: + movhlps m0, m6 + paddd m6, m0 + pshuflw m0, m6, 0x4e + paddd m6, m0 + movd eax, m6 + RET + + + +; void ff_add_hfyu_median_prediction_mmx2(uint8_t *dst, const uint8_t *top, const uint8_t *diff, int w, int *left, int *left_top) +cglobal add_hfyu_median_prediction_mmx2, 6,6,0, dst, top, diff, w, left, left_top + movq mm0, [topq] + movq mm2, mm0 + movd mm4, [left_topq] + psllq mm2, 8 + movq mm1, mm0 + por mm4, mm2 + movd mm3, [leftq] + psubb mm0, mm4 ; t-tl + add dstq, wq + add topq, wq + add diffq, wq + neg wq + jmp .skip +.loop: + movq mm4, [topq+wq] + movq mm0, mm4 + psllq mm4, 8 + por mm4, mm1 + movq mm1, mm0 ; t + psubb mm0, mm4 ; t-tl +.skip: + movq mm2, [diffq+wq] +%assign i 0 +%rep 8 + movq mm4, mm0 + paddb mm4, mm3 ; t-tl+l + movq mm5, mm3 + pmaxub mm3, mm1 + pminub mm5, mm1 + pminub mm3, mm4 + pmaxub mm3, mm5 ; median + paddb mm3, mm2 ; +residual +%if i==0 + movq mm7, mm3 + psllq mm7, 56 +%else + movq mm6, mm3 + psrlq mm7, 8 + psllq mm6, 56 + por mm7, mm6 +%endif +%if i<7 + psrlq mm0, 8 + psrlq mm1, 8 + psrlq mm2, 8 +%endif +%assign i i+1 +%endrep + movq [dstq+wq], mm7 + add wq, 8 + jl .loop + movzx r2d, byte [dstq-1] + mov [leftq], r2d + movzx r2d, byte [topq-1] + mov [left_topq], r2d + RET + + +%macro ADD_HFYU_LEFT_LOOP 1 ; %1 = is_aligned + add srcq, wq + add dstq, wq + neg wq +%%.loop: + mova m1, [srcq+wq] + mova m2, m1 + psllw m1, 8 + paddb m1, m2 + mova m2, m1 + pshufb m1, m3 + paddb m1, m2 + pshufb m0, m5 + mova m2, m1 + pshufb m1, m4 + paddb m1, m2 +%if mmsize == 16 + mova m2, m1 + pshufb m1, m6 + paddb m1, m2 +%endif + paddb m0, m1 +%if %1 + mova [dstq+wq], m0 +%else + movq [dstq+wq], m0 + movhps [dstq+wq+8], m0 +%endif + add wq, mmsize + jl %%.loop + mov eax, mmsize-1 + sub eax, wd + movd m1, eax + pshufb m0, m1 + movd eax, m0 + RET +%endmacro + +; int ff_add_hfyu_left_prediction(uint8_t *dst, const uint8_t *src, int w, int left) +INIT_MMX +cglobal add_hfyu_left_prediction_ssse3, 3,3,7, dst, src, w, left +.skip_prologue: + mova m5, [pb_7 GLOBAL] + mova m4, [pb_zzzz3333zzzzbbbb GLOBAL] + mova m3, [pb_zz11zz55zz99zzdd GLOBAL] + movd m0, leftm + psllq m0, 56 + ADD_HFYU_LEFT_LOOP 1 + +INIT_XMM +cglobal add_hfyu_left_prediction_sse4, 3,3,7, dst, src, w, left + mova m5, [pb_f GLOBAL] + mova m6, [pb_zzzzzzzz77777777 GLOBAL] + mova m4, [pb_zzzz3333zzzzbbbb GLOBAL] + mova m3, [pb_zz11zz55zz99zzdd GLOBAL] + movd m0, leftm + pslldq m0, 15 + test srcq, 15 + jnz add_hfyu_left_prediction_ssse3.skip_prologue + test dstq, 15 + jnz .unaligned + ADD_HFYU_LEFT_LOOP 1 +.unaligned: + ADD_HFYU_LEFT_LOOP 0 + + +; float ff_scalarproduct_float_sse(const float *v1, const float *v2, int len) +cglobal scalarproduct_float_sse, 3,3,2, v1, v2, offset + neg offsetq + shl offsetq, 2 + sub v1q, offsetq + sub v2q, offsetq + xorps xmm0, xmm0 + .loop: + movaps xmm1, [v1q+offsetq] + mulps xmm1, [v2q+offsetq] + addps xmm0, xmm1 + add offsetq, 16 + js .loop + movhlps xmm1, xmm0 + addps xmm0, xmm1 + movss xmm1, xmm0 + shufps xmm0, xmm0, 1 + addss xmm0, xmm1 +%ifndef ARCH_X86_64 + movd r0m, xmm0 + fld dword r0m +%endif + RET diff --git a/plugins/ffap/ffap.c b/plugins/ffap/ffap.c index 7f9022c9..ccfa2b2d 100644 --- a/plugins/ffap/ffap.c +++ b/plugins/ffap/ffap.c @@ -1275,89 +1275,8 @@ typedef int x86_reg; typedef struct { uint64_t a, b; } xmm_reg; #define DECLARE_ALIGNED(n,t,v) t v __attribute__ ((aligned (n))) #define DECLARE_ALIGNED_16(t, v) DECLARE_ALIGNED(16, t, v) -static int32_t scalarproduct_int16_sse2 (int16_t * v1, int16_t * v2, int order, int shift) -{ - int res = 0; - DECLARE_ALIGNED_16(xmm_reg, sh); - x86_reg o = -(order << 1); - - v1 += order; - v2 += order; - sh.a = shift; - __asm__ volatile( - "pxor %%xmm7, %%xmm7 \n\t" - "1: \n\t" - "movdqu (%0,%3), %%xmm0 \n\t" - "movdqu 16(%0,%3), %%xmm1 \n\t" - "pmaddwd (%1,%3), %%xmm0 \n\t" - "pmaddwd 16(%1,%3), %%xmm1 \n\t" - "paddd %%xmm0, %%xmm7 \n\t" - "paddd %%xmm1, %%xmm7 \n\t" - "add $32, %3 \n\t" - "js 1b \n\t" - "movhlps %%xmm7, %%xmm2 \n\t" - "paddd %%xmm2, %%xmm7 \n\t" - "psrad %4, %%xmm7 \n\t" - "pshuflw $0x4E, %%xmm7,%%xmm2 \n\t" - "paddd %%xmm2, %%xmm7 \n\t" - "movd %%xmm7, %2 \n\t" - : "+r"(v1), "+r"(v2), "=r"(res), "+r"(o) - : "m"(sh) - ); - return res; -} -static void add_int16_sse2(int16_t * v1, int16_t * v2, int order) -{ - x86_reg o = -(order << 1); - v1 += order; - v2 += order; - __asm__ volatile( - "1: \n\t" - "movdqu (%1,%2), %%xmm0 \n\t" - "movdqu 16(%1,%2), %%xmm1 \n\t" - "paddw (%0,%2), %%xmm0 \n\t" - "paddw 16(%0,%2), %%xmm1 \n\t" - "movdqa %%xmm0, (%0,%2) \n\t" - "movdqa %%xmm1, 16(%0,%2) \n\t" - "add $32, %2 \n\t" - "js 1b \n\t" - : "+r"(v1), "+r"(v2), "+r"(o) - ); -} - -static void sub_int16_sse2(int16_t * v1, int16_t * v2, int order) -{ - x86_reg o = -(order << 1); - v1 += order; - v2 += order; - __asm__ volatile( - "1: \n\t" - "movdqa (%0,%2), %%xmm0 \n\t" - "movdqa 16(%0,%2), %%xmm2 \n\t" - "movdqu (%1,%2), %%xmm1 \n\t" - "movdqu 16(%1,%2), %%xmm3 \n\t" - "psubw %%xmm1, %%xmm0 \n\t" - "psubw %%xmm3, %%xmm2 \n\t" - "movdqa %%xmm0, (%0,%2) \n\t" - "movdqa %%xmm2, 16(%0,%2) \n\t" - "add $32, %2 \n\t" - "js 1b \n\t" - : "+r"(v1), "+r"(v2), "+r"(o) - ); -} #endif -static int32_t -scalarproduct_int16_c(int16_t * v1, int16_t * v2, int order, int shift) -{ - int res = 0; - - while (order--) - res += (*v1++ * *v2++) >> shift; - - return res; -} - static int32_t scalarproduct_and_madd_int16_c(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul) { int res = 0; @@ -1368,32 +1287,9 @@ static int32_t scalarproduct_and_madd_int16_c(int16_t *v1, const int16_t *v2, co return res; } -static void -add_int16_c (int16_t *v1/*align 16*/, int16_t *v2, int len) { - while (len--) { - *v1++ += *v2++; - } -} - -static void -sub_int16_c (int16_t *v1/*align 16*/, int16_t *v2, int len) { - while (len--) { - *v1++ -= *v2++; - } -} - -static int32_t -(*scalarproduct_int16)(int16_t * v1, int16_t * v2, int order, int shift); - static int32_t (*scalarproduct_and_madd_int16)(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul); -static void -(*add_int16) (int16_t *v1/*align 16*/, int16_t *v2, int len); - -static void -(*sub_int16) (int16_t *v1/*align 16*/, int16_t *v2, int len); - static inline int16_t clip_int16(int a) { if ((a+32768) & ~65535) return (a>>31) ^ 32767; @@ -1425,17 +1321,6 @@ static inline void do_apply_filter(APEContext * ctx, int version, APEFilter *f, int absres; while (count--) { -#if 0 - /* round fixedpoint scalar product */ - res = (scalarproduct_int16(f->delay - order, f->coeffs, order, 0) + (1 << (fracbits - 1))) >> fracbits; - - - if (*data < 0) - add_int16(f->coeffs, f->adaptcoeffs - order, order); - else if (*data > 0) - sub_int16(f->coeffs, f->adaptcoeffs - order, order); -#endif - res = scalarproduct_and_madd_int16(f->coeffs, f->delay - order, f->adaptcoeffs - order, order, APESIGN(*data)); res = (res + (1 << (fracbits - 1))) >> fracbits; res += *data; @@ -2019,6 +1904,8 @@ static DB_decoder_t plugin = { #if HAVE_SSE2 && !ARCH_UNKNOWN +int32_t ff_scalarproduct_and_madd_int16_sse2(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul); + #define FF_MM_MMX 0x0001 ///< standard MMX #define FF_MM_3DNOW 0x0004 ///< AMD 3DNOW #define FF_MM_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext @@ -2131,32 +2018,21 @@ DB_plugin_t * ffap_load (DB_functions_t *api) { // detect sse2 #if ARCH_ARM - scalarproduct_int16 = EXTERN_ASMff_scalarproduct_int16_neon; scalarproduct_and_madd_int16 = EXTERN_ASMff_scalarproduct_and_madd_int16_neon; - add_int16 = add_int16_c; - sub_int16 = sub_int16_c; #elif HAVE_SSE2 && !ARCH_UNKNOWN -#error SSE2 version is broken in this branch, missing ff_scalarproduct_and_madd_int16_sse2 trace ("ffap: was compiled with sse2 support\n"); int mm_flags = mm_support (); if (mm_flags & FF_MM_SSE2) { trace ("ffap: sse2 support detected\n"); - scalarproduct_int16 = scalarproduct_int16_sse2; - add_int16 = add_int16_sse2; - sub_int16 = sub_int16_sse2; + scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_sse2; } else { trace ("ffap: sse2 is not supported by CPU\n"); - scalarproduct_int16 = scalarproduct_int16_c; - add_int16 = add_int16_c; - sub_int16 = sub_int16_c; + scalarproduct_and_madd_int16 = scalarproduct_and_madd_int16_c; } #else // trace ("ffap: sse2 support was not compiled in\n"); - scalarproduct_int16 = scalarproduct_int16_c; scalarproduct_and_madd_int16 = scalarproduct_and_madd_int16_c; - add_int16 = add_int16_c; - sub_int16 = sub_int16_c; #endif deadbeef = api; return DB_PLUGIN (&plugin); diff --git a/plugins/ffap/x86inc.asm b/plugins/ffap/x86inc.asm new file mode 100644 index 00000000..c29ef3ee --- /dev/null +++ b/plugins/ffap/x86inc.asm @@ -0,0 +1,625 @@ +;***************************************************************************** +;* x86inc.asm +;***************************************************************************** +;* Copyright (C) 2005-2008 Loren Merritt <lorenm@u.washington.edu> +;* +;* This file is part of FFmpeg. +;* +;* FFmpeg is free software; you can redistribute it and/or +;* modify it under the terms of the GNU Lesser General Public +;* License as published by the Free Software Foundation; either +;* version 2.1 of the License, or (at your option) any later version. +;* +;* FFmpeg is distributed in the hope that it will be useful, +;* but WITHOUT ANY WARRANTY; without even the implied warranty of +;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;* Lesser General Public License for more details. +;* +;* You should have received a copy of the GNU Lesser General Public +;* License along with FFmpeg; if not, write to the Free Software +;* 51, Inc., Foundation Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +;***************************************************************************** + +%ifdef ARCH_X86_64 + %ifidn __OUTPUT_FORMAT__,win32 + %define WIN64 + %else + %define UNIX64 + %endif +%endif + +; FIXME: All of the 64bit asm functions that take a stride as an argument +; via register, assume that the high dword of that register is filled with 0. +; This is true in practice (since we never do any 64bit arithmetic on strides, +; and x264's strides are all positive), but is not guaranteed by the ABI. + +; Name of the .rodata section. +; Kludge: Something on OS X fails to align .rodata even given an align attribute, +; so use a different read-only section. +%macro SECTION_RODATA 0-1 16 + %ifidn __OUTPUT_FORMAT__,macho64 + SECTION .text align=%1 + %elifidn __OUTPUT_FORMAT__,macho + SECTION .text align=%1 + fakegot: + %else + SECTION .rodata align=%1 + %endif +%endmacro + +; PIC support macros. +; x86_64 can't fit 64bit address literals in most instruction types, +; so shared objects (under the assumption that they might be anywhere +; in memory) must use an address mode that does fit. +; So all accesses to global variables must use this macro, e.g. +; mov eax, [foo GLOBAL] +; instead of +; mov eax, [foo] +; +; x86_32 doesn't require PIC. +; Some distros prefer shared objects to be PIC, but nothing breaks if +; the code contains a few textrels, so we'll skip that complexity. + +%ifdef WIN64 + %define PIC +%elifndef ARCH_X86_64 + %undef PIC +%endif +%ifdef PIC + %define GLOBAL wrt rip +%else + %define GLOBAL +%endif + +; Macros to eliminate most code duplication between x86_32 and x86_64: +; Currently this works only for leaf functions which load all their arguments +; into registers at the start, and make no other use of the stack. Luckily that +; covers most of x264's asm. + +; PROLOGUE: +; %1 = number of arguments. loads them from stack if needed. +; %2 = number of registers used. pushes callee-saved regs if needed. +; %3 = number of xmm registers used. pushes callee-saved xmm regs if needed. +; %4 = list of names to define to registers +; PROLOGUE can also be invoked by adding the same options to cglobal + +; e.g. +; cglobal foo, 2,3,0, dst, src, tmp +; declares a function (foo), taking two args (dst and src) and one local variable (tmp) + +; TODO Some functions can use some args directly from the stack. If they're the +; last args then you can just not declare them, but if they're in the middle +; we need more flexible macro. + +; RET: +; Pops anything that was pushed by PROLOGUE + +; REP_RET: +; Same, but if it doesn't pop anything it becomes a 2-byte ret, for athlons +; which are slow when a normal ret follows a branch. + +; registers: +; rN and rNq are the native-size register holding function argument N +; rNd, rNw, rNb are dword, word, and byte size +; rNm is the original location of arg N (a register or on the stack), dword +; rNmp is native size + +%macro DECLARE_REG 6 + %define r%1q %2 + %define r%1d %3 + %define r%1w %4 + %define r%1b %5 + %define r%1m %6 + %ifid %6 ; i.e. it's a register + %define r%1mp %2 + %elifdef ARCH_X86_64 ; memory + %define r%1mp qword %6 + %else + %define r%1mp dword %6 + %endif + %define r%1 %2 +%endmacro + +%macro DECLARE_REG_SIZE 2 + %define r%1q r%1 + %define e%1q r%1 + %define r%1d e%1 + %define e%1d e%1 + %define r%1w %1 + %define e%1w %1 + %define r%1b %2 + %define e%1b %2 +%ifndef ARCH_X86_64 + %define r%1 e%1 +%endif +%endmacro + +DECLARE_REG_SIZE ax, al +DECLARE_REG_SIZE bx, bl +DECLARE_REG_SIZE cx, cl +DECLARE_REG_SIZE dx, dl +DECLARE_REG_SIZE si, sil +DECLARE_REG_SIZE di, dil +DECLARE_REG_SIZE bp, bpl + +; t# defines for when per-arch register allocation is more complex than just function arguments + +%macro DECLARE_REG_TMP 1-* + %assign %%i 0 + %rep %0 + CAT_XDEFINE t, %%i, r%1 + %assign %%i %%i+1 + %rotate 1 + %endrep +%endmacro + +%macro DECLARE_REG_TMP_SIZE 0-* + %rep %0 + %define t%1q t%1 %+ q + %define t%1d t%1 %+ d + %define t%1w t%1 %+ w + %define t%1b t%1 %+ b + %rotate 1 + %endrep +%endmacro + +DECLARE_REG_TMP_SIZE 0,1,2,3,4,5,6,7 + +%ifdef ARCH_X86_64 + %define gprsize 8 +%else + %define gprsize 4 +%endif + +%macro PUSH 1 + push %1 + %assign stack_offset stack_offset+gprsize +%endmacro + +%macro POP 1 + pop %1 + %assign stack_offset stack_offset-gprsize +%endmacro + +%macro SUB 2 + sub %1, %2 + %ifidn %1, rsp + %assign stack_offset stack_offset+(%2) + %endif +%endmacro + +%macro ADD 2 + add %1, %2 + %ifidn %1, rsp + %assign stack_offset stack_offset-(%2) + %endif +%endmacro + +%macro movifnidn 2 + %ifnidn %1, %2 + mov %1, %2 + %endif +%endmacro + +%macro movsxdifnidn 2 + %ifnidn %1, %2 + movsxd %1, %2 + %endif +%endmacro + +%macro ASSERT 1 + %if (%1) == 0 + %error assert failed + %endif +%endmacro + +%macro DEFINE_ARGS 0-* + %ifdef n_arg_names + %assign %%i 0 + %rep n_arg_names + CAT_UNDEF arg_name %+ %%i, q + CAT_UNDEF arg_name %+ %%i, d + CAT_UNDEF arg_name %+ %%i, w + CAT_UNDEF arg_name %+ %%i, b + CAT_UNDEF arg_name %+ %%i, m + CAT_UNDEF arg_name, %%i + %assign %%i %%i+1 + %endrep + %endif + + %assign %%i 0 + %rep %0 + %xdefine %1q r %+ %%i %+ q + %xdefine %1d r %+ %%i %+ d + %xdefine %1w r %+ %%i %+ w + %xdefine %1b r %+ %%i %+ b + %xdefine %1m r %+ %%i %+ m + CAT_XDEFINE arg_name, %%i, %1 + %assign %%i %%i+1 + %rotate 1 + %endrep + %assign n_arg_names %%i +%endmacro + +%ifdef WIN64 ; Windows x64 ;================================================= + +DECLARE_REG 0, rcx, ecx, cx, cl, ecx +DECLARE_REG 1, rdx, edx, dx, dl, edx +DECLARE_REG 2, r8, r8d, r8w, r8b, r8d +DECLARE_REG 3, r9, r9d, r9w, r9b, r9d +DECLARE_REG 4, rdi, edi, di, dil, [rsp + stack_offset + 40] +DECLARE_REG 5, rsi, esi, si, sil, [rsp + stack_offset + 48] +DECLARE_REG 6, rax, eax, ax, al, [rsp + stack_offset + 56] +%define r7m [rsp + stack_offset + 64] +%define r8m [rsp + stack_offset + 72] + +%macro LOAD_IF_USED 2 ; reg_id, number_of_args + %if %1 < %2 + mov r%1, [rsp + stack_offset + 8 + %1*8] + %endif +%endmacro + +%macro PROLOGUE 2-4+ ; #args, #regs, #xmm_regs, arg_names... + ASSERT %2 >= %1 + %assign regs_used %2 + ASSERT regs_used <= 7 + %if %0 > 2 + %assign xmm_regs_used %3 + %else + %assign xmm_regs_used 0 + %endif + ASSERT xmm_regs_used <= 16 + %if regs_used > 4 + push r4 + push r5 + %assign stack_offset stack_offset+16 + %endif + %if xmm_regs_used > 6 + sub rsp, (xmm_regs_used-6)*16+16 + %assign stack_offset stack_offset+(xmm_regs_used-6)*16+16 + %assign %%i xmm_regs_used + %rep (xmm_regs_used-6) + %assign %%i %%i-1 + movdqa [rsp + (%%i-6)*16+8], xmm %+ %%i + %endrep + %endif + LOAD_IF_USED 4, %1 + LOAD_IF_USED 5, %1 + LOAD_IF_USED 6, %1 + DEFINE_ARGS %4 +%endmacro + +%macro RESTORE_XMM_INTERNAL 1 + %if xmm_regs_used > 6 + %assign %%i xmm_regs_used + %rep (xmm_regs_used-6) + %assign %%i %%i-1 + movdqa xmm %+ %%i, [%1 + (%%i-6)*16+8] + %endrep + add %1, (xmm_regs_used-6)*16+16 + %endif +%endmacro + +%macro RESTORE_XMM 1 + RESTORE_XMM_INTERNAL %1 + %assign stack_offset stack_offset-(xmm_regs_used-6)*16+16 + %assign xmm_regs_used 0 +%endmacro + +%macro RET 0 + RESTORE_XMM_INTERNAL rsp + %if regs_used > 4 + pop r5 + pop r4 + %endif + ret +%endmacro + +%macro REP_RET 0 + %if regs_used > 4 || xmm_regs_used > 6 + RET + %else + rep ret + %endif +%endmacro + +%elifdef ARCH_X86_64 ; *nix x64 ;============================================= + +DECLARE_REG 0, rdi, edi, di, dil, edi +DECLARE_REG 1, rsi, esi, si, sil, esi +DECLARE_REG 2, rdx, edx, dx, dl, edx +DECLARE_REG 3, rcx, ecx, cx, cl, ecx +DECLARE_REG 4, r8, r8d, r8w, r8b, r8d +DECLARE_REG 5, r9, r9d, r9w, r9b, r9d +DECLARE_REG 6, rax, eax, ax, al, [rsp + stack_offset + 8] +%define r7m [rsp + stack_offset + 16] +%define r8m [rsp + stack_offset + 24] + +%macro LOAD_IF_USED 2 ; reg_id, number_of_args + %if %1 < %2 + mov r%1, [rsp - 40 + %1*8] + %endif +%endmacro + +%macro PROLOGUE 2-4+ ; #args, #regs, #xmm_regs, arg_names... + ASSERT %2 >= %1 + ASSERT %2 <= 7 + LOAD_IF_USED 6, %1 + DEFINE_ARGS %4 +%endmacro + +%macro RET 0 + ret +%endmacro + +%macro REP_RET 0 + rep ret +%endmacro + +%else ; X86_32 ;============================================================== + +DECLARE_REG 0, eax, eax, ax, al, [esp + stack_offset + 4] +DECLARE_REG 1, ecx, ecx, cx, cl, [esp + stack_offset + 8] +DECLARE_REG 2, edx, edx, dx, dl, [esp + stack_offset + 12] +DECLARE_REG 3, ebx, ebx, bx, bl, [esp + stack_offset + 16] +DECLARE_REG 4, esi, esi, si, null, [esp + stack_offset + 20] +DECLARE_REG 5, edi, edi, di, null, [esp + stack_offset + 24] +DECLARE_REG 6, ebp, ebp, bp, null, [esp + stack_offset + 28] +%define r7m [esp + stack_offset + 32] +%define r8m [esp + stack_offset + 36] +%define rsp esp + +%macro PUSH_IF_USED 1 ; reg_id + %if %1 < regs_used + push r%1 + %assign stack_offset stack_offset+4 + %endif +%endmacro + +%macro POP_IF_USED 1 ; reg_id + %if %1 < regs_used + pop r%1 + %endif +%endmacro + +%macro LOAD_IF_USED 2 ; reg_id, number_of_args + %if %1 < %2 + mov r%1, [esp + stack_offset + 4 + %1*4] + %endif +%endmacro + +%macro PROLOGUE 2-4+ ; #args, #regs, arg_names... + ASSERT %2 >= %1 + %assign regs_used %2 + ASSERT regs_used <= 7 + PUSH_IF_USED 3 + PUSH_IF_USED 4 + PUSH_IF_USED 5 + PUSH_IF_USED 6 + LOAD_IF_USED 0, %1 + LOAD_IF_USED 1, %1 + LOAD_IF_USED 2, %1 + LOAD_IF_USED 3, %1 + LOAD_IF_USED 4, %1 + LOAD_IF_USED 5, %1 + LOAD_IF_USED 6, %1 + DEFINE_ARGS %4 +%endmacro + +%macro RET 0 + POP_IF_USED 6 + POP_IF_USED 5 + POP_IF_USED 4 + POP_IF_USED 3 + ret +%endmacro + +%macro REP_RET 0 + %if regs_used > 3 + RET + %else + rep ret + %endif +%endmacro + +%endif ;====================================================================== + + + +;============================================================================= +; arch-independent part +;============================================================================= + +%assign function_align 16 + +; Symbol prefix for C linkage +%macro cglobal 1-2+ + %xdefine %1 ff_%1 + %ifdef PREFIX + %xdefine %1 _ %+ %1 + %endif + %xdefine %1.skip_prologue %1 %+ .skip_prologue + %ifidn __OUTPUT_FORMAT__,elf + global %1:function hidden + %else + global %1 + %endif + align function_align + %1: + RESET_MM_PERMUTATION ; not really needed, but makes disassembly somewhat nicer + %assign stack_offset 0 + %if %0 > 1 + PROLOGUE %2 + %endif +%endmacro + +%macro cextern 1 + %ifdef PREFIX + %xdefine %1 _%1 + %endif + extern %1 +%endmacro + +; This is needed for ELF, otherwise the GNU linker assumes the stack is +; executable by default. +%ifidn __OUTPUT_FORMAT__,elf +SECTION .note.GNU-stack noalloc noexec nowrite progbits +%endif + +%assign FENC_STRIDE 16 +%assign FDEC_STRIDE 32 + +; merge mmx and sse* + +%macro CAT_XDEFINE 3 + %xdefine %1%2 %3 +%endmacro + +%macro CAT_UNDEF 2 + %undef %1%2 +%endmacro + +%macro INIT_MMX 0 + %define RESET_MM_PERMUTATION INIT_MMX + %define mmsize 8 + %define num_mmregs 8 + %define mova movq + %define movu movq + %define movh movd + %define movnt movntq + %assign %%i 0 + %rep 8 + CAT_XDEFINE m, %%i, mm %+ %%i + CAT_XDEFINE nmm, %%i, %%i + %assign %%i %%i+1 + %endrep + %rep 8 + CAT_UNDEF m, %%i + CAT_UNDEF nmm, %%i + %assign %%i %%i+1 + %endrep +%endmacro + +%macro INIT_XMM 0 + %define RESET_MM_PERMUTATION INIT_XMM + %define mmsize 16 + %define num_mmregs 8 + %ifdef ARCH_X86_64 + %define num_mmregs 16 + %endif + %define mova movdqa + %define movu movdqu + %define movh movq + %define movnt movntdq + %assign %%i 0 + %rep num_mmregs + CAT_XDEFINE m, %%i, xmm %+ %%i + CAT_XDEFINE nxmm, %%i, %%i + %assign %%i %%i+1 + %endrep +%endmacro + +INIT_MMX + +; I often want to use macros that permute their arguments. e.g. there's no +; efficient way to implement butterfly or transpose or dct without swapping some +; arguments. +; +; I would like to not have to manually keep track of the permutations: +; If I insert a permutation in the middle of a function, it should automatically +; change everything that follows. For more complex macros I may also have multiple +; implementations, e.g. the SSE2 and SSSE3 versions may have different permutations. +; +; Hence these macros. Insert a PERMUTE or some SWAPs at the end of a macro that +; permutes its arguments. It's equivalent to exchanging the contents of the +; registers, except that this way you exchange the register names instead, so it +; doesn't cost any cycles. + +%macro PERMUTE 2-* ; takes a list of pairs to swap +%rep %0/2 + %xdefine tmp%2 m%2 + %xdefine ntmp%2 nm%2 + %rotate 2 +%endrep +%rep %0/2 + %xdefine m%1 tmp%2 + %xdefine nm%1 ntmp%2 + %undef tmp%2 + %undef ntmp%2 + %rotate 2 +%endrep +%endmacro + +%macro SWAP 2-* ; swaps a single chain (sometimes more concise than pairs) +%rep %0-1 +%ifdef m%1 + %xdefine tmp m%1 + %xdefine m%1 m%2 + %xdefine m%2 tmp + CAT_XDEFINE n, m%1, %1 + CAT_XDEFINE n, m%2, %2 +%else + ; If we were called as "SWAP m0,m1" rather than "SWAP 0,1" infer the original numbers here. + ; Be careful using this mode in nested macros though, as in some cases there may be + ; other copies of m# that have already been dereferenced and don't get updated correctly. + %xdefine %%n1 n %+ %1 + %xdefine %%n2 n %+ %2 + %xdefine tmp m %+ %%n1 + CAT_XDEFINE m, %%n1, m %+ %%n2 + CAT_XDEFINE m, %%n2, tmp + CAT_XDEFINE n, m %+ %%n1, %%n1 + CAT_XDEFINE n, m %+ %%n2, %%n2 +%endif + %undef tmp + %rotate 1 +%endrep +%endmacro + +%macro SAVE_MM_PERMUTATION 1 + %assign %%i 0 + %rep num_mmregs + CAT_XDEFINE %1_m, %%i, m %+ %%i + %assign %%i %%i+1 + %endrep +%endmacro + +%macro LOAD_MM_PERMUTATION 1 + %assign %%i 0 + %rep num_mmregs + CAT_XDEFINE m, %%i, %1_m %+ %%i + CAT_XDEFINE n, m %+ %%i, %%i + %assign %%i %%i+1 + %endrep +%endmacro + +%macro call 1 + call %1 + %ifdef %1_m0 + LOAD_MM_PERMUTATION %1 + %endif +%endmacro + +;Substitutions that reduce instruction size but are functionally equivalent +%macro add 2 + %ifnum %2 + %if %2==128 + sub %1, -128 + %else + add %1, %2 + %endif + %else + add %1, %2 + %endif +%endmacro + +%macro sub 2 + %ifnum %2 + %if %2==128 + add %1, -128 + %else + sub %1, %2 + %endif + %else + sub %1, %2 + %endif +%endmacro diff --git a/po/deadbeef.pot b/po/deadbeef.pot deleted file mode 100644 index 9a56f44f..00000000 --- a/po/deadbeef.pot +++ /dev/null @@ -1,1711 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-12 13:48+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../plugins/gtkui/callbacks.c:121 -msgid "Supported sound formats" -msgstr "" - -#: ../plugins/gtkui/callbacks.c:132 ../plugins/gtkui/gtkui.c:776 -msgid "Other files (*)" -msgstr "" - -#: ../plugins/gtkui/callbacks.c:142 -msgid "Open file(s)..." -msgstr "" - -#: ../plugins/gtkui/callbacks.c:177 -msgid "Add file(s) to playlist..." -msgstr "" - -#: ../plugins/gtkui/callbacks.c:218 -msgid "Add folder(s) to playlist..." -msgstr "" - -#: ../plugins/gtkui/callbacks.c:223 -msgid "Follow symlinks" -msgstr "" - -#: ../plugins/gtkui/callbacks.c:697 -msgid "Failed while reading help file" -msgstr "" - -#: ../plugins/gtkui/callbacks.c:707 -msgid "Failed to load help file" -msgstr "" - -#: ../plugins/gtkui/callbacks.c:722 -msgid "help.txt" -msgstr "" - -#: ../plugins/gtkui/callbacks.c:723 ../plugins/gtkui/interface.c:1155 -#: ../plugins/gtkui/deadbeef.glade.h:48 ../plugins/converter/convgui.c:1240 -#: ../plugins/converter/convgui.c:1248 -msgid "Help" -msgstr "" - -#: ../plugins/gtkui/callbacks.c:733 -#, c-format -msgid "About DeaDBeeF %s" -msgstr "" - -#: ../plugins/gtkui/callbacks.c:746 -#, c-format -msgid "DeaDBeeF %s ChangeLog" -msgstr "" - -#: ../plugins/gtkui/callbacks.c:1091 -#, c-format -msgid "DeaDBeeF Translators" -msgstr "" - -#: ../plugins/gtkui/ddbtabstrip.c:689 ../plugins/gtkui/trkproperties.c:618 -msgid "Edit playlist" -msgstr "" - -#: ../plugins/gtkui/ddbtabstrip.c:692 ../plugins/gtkui/interface.c:1486 -#: ../plugins/gtkui/interface.c:2870 ../plugins/gtkui/deadbeef.glade.h:135 -#: ../plugins/converter/interface.c:402 -msgid "Title:" -msgstr "" - -#: ../plugins/gtkui/ddbtabstrip.c:748 -msgid "Rename Playlist" -msgstr "" - -#: ../plugins/gtkui/ddbtabstrip.c:752 -msgid "Remove Playlist" -msgstr "" - -#: ../plugins/gtkui/ddbtabstrip.c:756 -msgid "Add New Playlist" -msgstr "" - -#: ../plugins/gtkui/eq.c:136 -msgid "Save DeaDBeeF EQ Preset" -msgstr "" - -#: ../plugins/gtkui/eq.c:143 -msgid "DeaDBeeF EQ preset files (*.ddbeq)" -msgstr "" - -#: ../plugins/gtkui/eq.c:182 -msgid "Load DeaDBeeF EQ Preset..." -msgstr "" - -#: ../plugins/gtkui/eq.c:186 -msgid "DeaDBeeF EQ presets (*.ddbeq)" -msgstr "" - -#: ../plugins/gtkui/eq.c:247 -msgid "Import Foobar2000 EQ Preset..." -msgstr "" - -#: ../plugins/gtkui/eq.c:251 -msgid "Foobar2000 EQ presets (*.feq)" -msgstr "" - -#: ../plugins/gtkui/eq.c:316 -msgid "Save Preset" -msgstr "" - -#: ../plugins/gtkui/eq.c:324 -msgid "Load Preset" -msgstr "" - -#: ../plugins/gtkui/eq.c:332 -msgid "Import Foobar2000 Preset" -msgstr "" - -#: ../plugins/gtkui/eq.c:357 -msgid "Enable" -msgstr "" - -#: ../plugins/gtkui/eq.c:366 -msgid "Zero All" -msgstr "" - -#: ../plugins/gtkui/eq.c:373 -msgid "Zero Preamp" -msgstr "" - -#: ../plugins/gtkui/eq.c:380 -msgid "Zero Bands" -msgstr "" - -#: ../plugins/gtkui/eq.c:387 ../plugins/converter/interface.c:826 -msgid "Presets" -msgstr "" - -#: ../plugins/gtkui/gtkui.c:137 -#, c-format -msgid "1 day %d:%02d:%02d" -msgstr "" - -#: ../plugins/gtkui/gtkui.c:140 -#, c-format -msgid "%d days %d:%02d:%02d" -msgstr "" - -#: ../plugins/gtkui/gtkui.c:149 -#, c-format -msgid "Stopped | %d tracks | %s total playtime" -msgstr "" - -#: ../plugins/gtkui/gtkui.c:162 -msgid "Mono" -msgstr "" - -#: ../plugins/gtkui/gtkui.c:162 -msgid "Stereo" -msgstr "" - -#: ../plugins/gtkui/gtkui.c:187 -#, c-format -msgid "| %4d kbps " -msgstr "" - -#: ../plugins/gtkui/gtkui.c:193 -msgid "Paused | " -msgstr "" - -#: ../plugins/gtkui/gtkui.c:198 -#, c-format -msgid "" -"%s%s %s| %dHz | %d bit | %s | %d:%02d / %s | %d tracks | %s total playtime" -msgstr "" - -#: ../plugins/gtkui/gtkui.c:632 -msgid "Save Playlist As" -msgstr "" - -#: ../plugins/gtkui/gtkui.c:643 -msgid "DeaDBeeF playlist files (*.dbpl)" -msgstr "" - -#: ../plugins/gtkui/gtkui.c:761 -msgid "Load Playlist" -msgstr "" - -#: ../plugins/gtkui/gtkui.c:914 ../plugins/gtkui/fileman.c:40 -msgid "New Playlist" -msgstr "" - -#: ../plugins/gtkui/gtkui.c:917 -#, c-format -msgid "New Playlist (%d)" -msgstr "" - -#: ../plugins/gtkui/interface.c:150 ../plugins/gtkui/deadbeef.glade.h:155 -msgid "_File" -msgstr "" - -#: ../plugins/gtkui/interface.c:157 ../plugins/gtkui/deadbeef.glade.h:162 -msgid "_Open file(s)" -msgstr "" - -#: ../plugins/gtkui/interface.c:173 ../plugins/gtkui/deadbeef.glade.h:6 -msgid "Add file(s)" -msgstr "" - -#: ../plugins/gtkui/interface.c:181 ../plugins/gtkui/deadbeef.glade.h:8 -msgid "Add folder(s)" -msgstr "" - -#: ../plugins/gtkui/interface.c:189 ../plugins/gtkui/interface.c:2970 -#: ../plugins/gtkui/deadbeef.glade.h:9 -msgid "Add location" -msgstr "" - -#: ../plugins/gtkui/interface.c:198 ../plugins/gtkui/deadbeef.glade.h:79 -msgid "New playlist" -msgstr "" - -#: ../plugins/gtkui/interface.c:205 ../plugins/gtkui/deadbeef.glade.h:71 -msgid "Load playlist" -msgstr "" - -#: ../plugins/gtkui/interface.c:209 ../plugins/gtkui/deadbeef.glade.h:109 -msgid "Save playlist" -msgstr "" - -#: ../plugins/gtkui/interface.c:218 ../plugins/gtkui/deadbeef.glade.h:164 -msgid "_Quit" -msgstr "" - -#: ../plugins/gtkui/interface.c:229 ../plugins/gtkui/deadbeef.glade.h:154 -msgid "_Edit" -msgstr "" - -#: ../plugins/gtkui/interface.c:236 ../plugins/gtkui/deadbeef.glade.h:152 -msgid "_Clear" -msgstr "" - -#: ../plugins/gtkui/interface.c:244 ../plugins/gtkui/deadbeef.glade.h:114 -msgid "Select all" -msgstr "" - -#: ../plugins/gtkui/interface.c:251 ../plugins/gtkui/deadbeef.glade.h:32 -msgid "Deselect all" -msgstr "" - -#: ../plugins/gtkui/interface.c:258 ../plugins/gtkui/deadbeef.glade.h:54 -msgid "Invert selection" -msgstr "" - -#: ../plugins/gtkui/interface.c:262 ../plugins/gtkui/deadbeef.glade.h:117 -msgid "Selection" -msgstr "" - -#: ../plugins/gtkui/interface.c:269 ../plugins/gtkui/plcommon.c:453 -#: ../plugins/gtkui/prefwin.c:323 ../plugins/gtkui/deadbeef.glade.h:104 -#: ../plugins/converter/interface.c:653 -msgid "Remove" -msgstr "" - -#: ../plugins/gtkui/interface.c:277 ../plugins/gtkui/deadbeef.glade.h:24 -msgid "Crop" -msgstr "" - -#: ../plugins/gtkui/interface.c:281 ../plugins/gtkui/deadbeef.glade.h:156 -msgid "_Find" -msgstr "" - -#: ../plugins/gtkui/interface.c:288 ../plugins/gtkui/deadbeef.glade.h:121 -msgid "Sort By" -msgstr "" - -#: ../plugins/gtkui/interface.c:295 ../plugins/gtkui/interface.c:1516 -#: ../plugins/gtkui/mainplaylist.c:315 ../plugins/gtkui/prefwin.c:623 -#: ../plugins/gtkui/search.c:393 ../plugins/gtkui/deadbeef.glade.h:134 -#: ../plugins/converter/convgui.c:790 ../plugins/converter/convgui.c:1211 -#: ../plugins/converter/interface.c:630 -msgid "Title" -msgstr "" - -#: ../plugins/gtkui/interface.c:299 ../plugins/gtkui/deadbeef.glade.h:139 -msgid "Track number" -msgstr "" - -#: ../plugins/gtkui/interface.c:303 ../plugins/gtkui/interface.c:1515 -#: ../plugins/gtkui/interface.c:1869 ../plugins/gtkui/deadbeef.glade.h:10 -#: ../translation/extra.c:69 -msgid "Album" -msgstr "" - -#. Track properties dialog -#: ../plugins/gtkui/interface.c:307 ../plugins/gtkui/interface.c:1514 -#: ../plugins/gtkui/plcommon.c:998 ../plugins/gtkui/deadbeef.glade.h:13 -#: ../translation/extra.c:65 -msgid "Artist" -msgstr "" - -#: ../plugins/gtkui/interface.c:311 ../plugins/gtkui/deadbeef.glade.h:31 -#: ../translation/extra.c:70 -msgid "Date" -msgstr "" - -#: ../plugins/gtkui/interface.c:315 ../plugins/gtkui/interface.c:1520 -#: ../plugins/gtkui/plcommon.c:1002 ../plugins/gtkui/deadbeef.glade.h:27 -msgid "Custom" -msgstr "" - -#: ../plugins/gtkui/interface.c:324 ../plugins/gtkui/interface.c:1798 -#: ../plugins/gtkui/deadbeef.glade.h:94 -msgid "Preferences" -msgstr "" - -#: ../plugins/gtkui/interface.c:328 ../plugins/gtkui/deadbeef.glade.h:166 -msgid "_View" -msgstr "" - -#: ../plugins/gtkui/interface.c:335 ../plugins/gtkui/deadbeef.glade.h:124 -msgid "Status bar" -msgstr "" - -#: ../plugins/gtkui/interface.c:339 ../plugins/gtkui/deadbeef.glade.h:21 -msgid "Column headers" -msgstr "" - -#: ../plugins/gtkui/interface.c:343 ../plugins/gtkui/deadbeef.glade.h:131 -msgid "Tabs" -msgstr "" - -#: ../plugins/gtkui/interface.c:347 ../plugins/gtkui/deadbeef.glade.h:40 -msgid "Equalizer" -msgstr "" - -#: ../plugins/gtkui/interface.c:351 ../plugins/gtkui/deadbeef.glade.h:163 -msgid "_Playback" -msgstr "" - -#: ../plugins/gtkui/interface.c:358 ../plugins/gtkui/interface.c:3246 -#: ../plugins/gtkui/deadbeef.glade.h:82 -msgid "Order" -msgstr "" - -#: ../plugins/gtkui/interface.c:365 ../plugins/gtkui/deadbeef.glade.h:70 -msgid "Linear" -msgstr "" - -#: ../plugins/gtkui/interface.c:370 ../plugins/gtkui/deadbeef.glade.h:120 -msgid "Shuffle tracks" -msgstr "" - -#: ../plugins/gtkui/interface.c:375 ../plugins/gtkui/deadbeef.glade.h:119 -msgid "Shuffle albums" -msgstr "" - -#: ../plugins/gtkui/interface.c:380 ../plugins/gtkui/deadbeef.glade.h:103 -msgid "Random" -msgstr "" - -#: ../plugins/gtkui/interface.c:386 ../plugins/gtkui/deadbeef.glade.h:74 -msgid "Looping" -msgstr "" - -#: ../plugins/gtkui/interface.c:393 ../plugins/gtkui/deadbeef.glade.h:72 -msgid "Loop All" -msgstr "" - -#: ../plugins/gtkui/interface.c:398 ../plugins/gtkui/deadbeef.glade.h:73 -msgid "Loop Single Song" -msgstr "" - -#: ../plugins/gtkui/interface.c:403 ../plugins/gtkui/deadbeef.glade.h:36 -msgid "Don't Loop" -msgstr "" - -#: ../plugins/gtkui/interface.c:409 ../plugins/gtkui/deadbeef.glade.h:110 -msgid "Scroll follows playback" -msgstr "" - -#: ../plugins/gtkui/interface.c:414 ../plugins/gtkui/deadbeef.glade.h:26 -msgid "Cursor follows playback" -msgstr "" - -#: ../plugins/gtkui/interface.c:418 ../plugins/gtkui/deadbeef.glade.h:126 -msgid "Stop after current" -msgstr "" - -#: ../plugins/gtkui/interface.c:430 ../plugins/gtkui/deadbeef.glade.h:66 -msgid "Jump to current track" -msgstr "" - -#: ../plugins/gtkui/interface.c:437 ../plugins/gtkui/interface.c:444 -#: ../plugins/gtkui/deadbeef.glade.h:158 -msgid "_Help" -msgstr "" - -#: ../plugins/gtkui/interface.c:452 ../plugins/gtkui/deadbeef.glade.h:151 -msgid "_ChangeLog" -msgstr "" - -#: ../plugins/gtkui/interface.c:461 ../plugins/gtkui/deadbeef.glade.h:157 -msgid "_GPLv2" -msgstr "" - -#: ../plugins/gtkui/interface.c:465 ../plugins/gtkui/deadbeef.glade.h:159 -msgid "_LGPLv2.1" -msgstr "" - -#: ../plugins/gtkui/interface.c:474 ../plugins/gtkui/deadbeef.glade.h:148 -msgid "_About" -msgstr "" - -#: ../plugins/gtkui/interface.c:482 ../plugins/gtkui/deadbeef.glade.h:165 -msgid "_Translators" -msgstr "" - -#: ../plugins/gtkui/interface.c:898 ../plugins/gtkui/deadbeef.glade.h:111 -msgid "Search" -msgstr "" - -#: ../plugins/gtkui/interface.c:973 ../plugins/gtkui/deadbeef.glade.h:125 -msgid "Stop" -msgstr "" - -#: ../plugins/gtkui/interface.c:981 ../plugins/gtkui/deadbeef.glade.h:88 -msgid "Play" -msgstr "" - -#: ../plugins/gtkui/interface.c:989 ../plugins/gtkui/deadbeef.glade.h:87 -msgid "Pause" -msgstr "" - -#: ../plugins/gtkui/interface.c:997 ../plugins/gtkui/deadbeef.glade.h:95 -msgid "Previous" -msgstr "" - -#: ../plugins/gtkui/interface.c:1005 ../plugins/gtkui/deadbeef.glade.h:80 -msgid "Next" -msgstr "" - -#: ../plugins/gtkui/interface.c:1013 ../plugins/gtkui/deadbeef.glade.h:89 -msgid "Play Random" -msgstr "" - -#: ../plugins/gtkui/interface.c:1022 ../plugins/gtkui/deadbeef.glade.h:5 -msgid "About" -msgstr "" - -#: ../plugins/gtkui/interface.c:1035 ../plugins/gtkui/deadbeef.glade.h:102 -msgid "Quit" -msgstr "" - -#: ../plugins/gtkui/interface.c:1225 ../plugins/gtkui/deadbeef.glade.h:138 -msgid "Track Properties" -msgstr "" - -#: ../plugins/gtkui/interface.c:1270 ../plugins/gtkui/deadbeef.glade.h:118 -msgid "Settings" -msgstr "" - -#: ../plugins/gtkui/interface.c:1296 ../plugins/gtkui/deadbeef.glade.h:149 -msgid "_Apply" -msgstr "" - -#: ../plugins/gtkui/interface.c:1317 ../plugins/gtkui/interface.c:1363 -#: ../plugins/gtkui/deadbeef.glade.h:153 -msgid "_Close" -msgstr "" - -#: ../plugins/gtkui/interface.c:1321 ../plugins/gtkui/deadbeef.glade.h:75 -msgid "Metadata" -msgstr "" - -#: ../plugins/gtkui/interface.c:1367 ../plugins/gtkui/plcommon.c:603 -#: ../plugins/gtkui/deadbeef.glade.h:96 -msgid "Properties" -msgstr "" - -#: ../plugins/gtkui/interface.c:1494 ../plugins/gtkui/deadbeef.glade.h:39 -msgid "Enter new column title here" -msgstr "" - -#: ../plugins/gtkui/interface.c:1502 ../plugins/gtkui/deadbeef.glade.h:140 -msgid "Type:" -msgstr "" - -#: ../plugins/gtkui/interface.c:1510 -msgid "Item Index" -msgstr "" - -#. create default set of columns -#: ../plugins/gtkui/interface.c:1511 ../plugins/gtkui/mainplaylist.c:312 -msgid "Playing" -msgstr "" - -#: ../plugins/gtkui/interface.c:1512 -msgid "Album Art" -msgstr "" - -#: ../plugins/gtkui/interface.c:1513 -msgid "Artist - Album" -msgstr "" - -#: ../plugins/gtkui/interface.c:1517 ../plugins/gtkui/mainplaylist.c:316 -#: ../plugins/gtkui/search.c:394 -msgid "Duration" -msgstr "" - -#: ../plugins/gtkui/interface.c:1518 ../translation/extra.c:71 -msgid "Track Number" -msgstr "" - -#: ../plugins/gtkui/interface.c:1519 ../translation/extra.c:68 -msgid "Band / Album Artist" -msgstr "" - -#: ../plugins/gtkui/interface.c:1526 ../plugins/gtkui/interface.c:3098 -#: ../plugins/gtkui/deadbeef.glade.h:44 -msgid "Format:" -msgstr "" - -#: ../plugins/gtkui/interface.c:1551 ../plugins/gtkui/deadbeef.glade.h:11 -msgid "Alignment:" -msgstr "" - -#: ../plugins/gtkui/interface.c:1559 -msgid "Left" -msgstr "" - -#: ../plugins/gtkui/interface.c:1560 -msgid "Right" -msgstr "" - -#: ../plugins/gtkui/interface.c:1583 ../plugins/gtkui/interface.c:2901 -#: ../plugins/gtkui/interface.c:3013 ../plugins/gtkui/interface.c:3139 -#: ../plugins/gtkui/deadbeef.glade.h:150 -msgid "_Cancel" -msgstr "" - -#: ../plugins/gtkui/interface.c:1604 ../plugins/gtkui/interface.c:2922 -#: ../plugins/gtkui/interface.c:3034 ../plugins/gtkui/interface.c:3160 -#: ../plugins/gtkui/deadbeef.glade.h:161 -msgid "_OK" -msgstr "" - -#: ../plugins/gtkui/interface.c:1819 ../plugins/gtkui/deadbeef.glade.h:84 -msgid "Output plugin:" -msgstr "" - -#: ../plugins/gtkui/interface.c:1832 ../plugins/gtkui/deadbeef.glade.h:83 -msgid "Output device:" -msgstr "" - -#: ../plugins/gtkui/interface.c:1841 ../plugins/gtkui/deadbeef.glade.h:12 -msgid "Always convert 8 bit audio to 16 bit" -msgstr "" - -#: ../plugins/gtkui/interface.c:1845 ../plugins/gtkui/deadbeef.glade.h:123 -msgid "Sound" -msgstr "" - -#: ../plugins/gtkui/interface.c:1858 ../plugins/gtkui/deadbeef.glade.h:105 -msgid "Replaygain mode:" -msgstr "" - -#: ../plugins/gtkui/interface.c:1867 -msgid "Disable" -msgstr "" - -#: ../plugins/gtkui/interface.c:1868 -msgid "Track" -msgstr "" - -#: ../plugins/gtkui/interface.c:1871 ../plugins/gtkui/deadbeef.glade.h:106 -msgid "Replaygain peak scale" -msgstr "" - -#: ../plugins/gtkui/interface.c:1879 ../plugins/gtkui/deadbeef.glade.h:107 -msgid "Replaygain preamp:" -msgstr "" - -#: ../plugins/gtkui/interface.c:1883 ../plugins/gtkui/deadbeef.glade.h:2 -msgid "-12 dB" -msgstr "" - -#: ../plugins/gtkui/interface.c:1893 ../plugins/gtkui/deadbeef.glade.h:1 -msgid "+12 dB" -msgstr "" - -#: ../plugins/gtkui/interface.c:1901 ../plugins/gtkui/deadbeef.glade.h:7 -msgid "Add files from command line (or file manager) to this playlist:" -msgstr "" - -#: ../plugins/gtkui/interface.c:1910 ../plugins/gtkui/deadbeef.glade.h:108 -msgid "Resume previous session on startup" -msgstr "" - -#: ../plugins/gtkui/interface.c:1914 ../plugins/gtkui/deadbeef.glade.h:37 -msgid "Don't add from archives when adding folders" -msgstr "" - -#: ../plugins/gtkui/interface.c:1918 ../plugins/gtkui/deadbeef.glade.h:90 -msgid "Playback" -msgstr "" - -#: ../plugins/gtkui/interface.c:1939 ../plugins/gtkui/interface.c:2471 -#: ../plugins/gtkui/deadbeef.glade.h:22 ../plugins/converter/interface.c:657 -msgid "Configure" -msgstr "" - -#: ../plugins/gtkui/interface.c:1974 ../plugins/gtkui/deadbeef.glade.h:29 -msgid "DSP Chain Preset" -msgstr "" - -#: ../plugins/gtkui/interface.c:1986 ../plugins/gtkui/deadbeef.glade.h:160 -msgid "_Load" -msgstr "" - -#: ../plugins/gtkui/interface.c:1990 ../plugins/gtkui/deadbeef.glade.h:28 -msgid "DSP" -msgstr "" - -#: ../plugins/gtkui/interface.c:1999 ../plugins/gtkui/deadbeef.glade.h:19 -msgid "Close minimizes to tray" -msgstr "" - -#: ../plugins/gtkui/interface.c:2003 ../plugins/gtkui/deadbeef.glade.h:77 -msgid "Middle mouse button closes playlist" -msgstr "" - -#: ../plugins/gtkui/interface.c:2007 ../plugins/gtkui/deadbeef.glade.h:50 -msgid "Hide system tray icon" -msgstr "" - -#: ../plugins/gtkui/interface.c:2011 ../plugins/gtkui/deadbeef.glade.h:142 -msgid "Use bold font for currently playing track" -msgstr "" - -#: ../plugins/gtkui/interface.c:2015 ../plugins/gtkui/deadbeef.glade.h:49 -msgid "Hide \"Delete from disk\" context menu item" -msgstr "" - -#: ../plugins/gtkui/interface.c:2019 ../plugins/gtkui/deadbeef.glade.h:16 -msgid "Auto-name playlists when adding a single folder" -msgstr "" - -#: ../plugins/gtkui/interface.c:2027 ../plugins/gtkui/deadbeef.glade.h:53 -msgid "Interface refresh rate (times per second):" -msgstr "" - -#: ../plugins/gtkui/interface.c:2041 ../plugins/gtkui/deadbeef.glade.h:136 -msgid "Titlebar text while playing:" -msgstr "" - -#: ../plugins/gtkui/interface.c:2055 ../plugins/gtkui/deadbeef.glade.h:137 -msgid "Titlebar text while stopped:" -msgstr "" - -#: ../plugins/gtkui/interface.c:2069 ../plugins/gtkui/deadbeef.glade.h:46 -msgid "GUI Plugin (changing requires restart):" -msgstr "" - -#: ../plugins/gtkui/interface.c:2077 ../plugins/gtkui/deadbeef.glade.h:45 -msgid "GUI" -msgstr "" - -#: ../plugins/gtkui/interface.c:2092 ../plugins/gtkui/interface.c:2136 -#: ../plugins/gtkui/deadbeef.glade.h:85 -msgid "Override" -msgstr "" - -#: ../plugins/gtkui/interface.c:2101 ../plugins/gtkui/deadbeef.glade.h:42 -msgid "Foreground" -msgstr "" - -#: ../plugins/gtkui/interface.c:2108 ../plugins/gtkui/deadbeef.glade.h:17 -msgid "Background" -msgstr "" - -#: ../plugins/gtkui/interface.c:2127 ../plugins/gtkui/deadbeef.glade.h:112 -msgid "Seekbar/Volumebar colors" -msgstr "" - -#: ../plugins/gtkui/interface.c:2145 ../plugins/gtkui/deadbeef.glade.h:76 -msgid "Middle" -msgstr "" - -#: ../plugins/gtkui/interface.c:2152 ../plugins/gtkui/deadbeef.glade.h:69 -msgid "Light" -msgstr "" - -#: ../plugins/gtkui/interface.c:2159 ../plugins/gtkui/deadbeef.glade.h:30 -msgid "Dark" -msgstr "" - -#: ../plugins/gtkui/interface.c:2190 ../plugins/gtkui/deadbeef.glade.h:18 -msgid "Base" -msgstr "" - -#: ../plugins/gtkui/interface.c:2197 ../plugins/gtkui/interface.c:2254 -#: ../plugins/gtkui/deadbeef.glade.h:133 -msgid "Text" -msgstr "" - -#: ../plugins/gtkui/interface.c:2210 ../plugins/gtkui/deadbeef.glade.h:130 -msgid "Tab strip colors" -msgstr "" - -#: ../plugins/gtkui/interface.c:2219 ../plugins/gtkui/deadbeef.glade.h:86 -msgid "Override (looses GTK treeview theming, but speeds up rendering)" -msgstr "" - -#: ../plugins/gtkui/interface.c:2228 ../plugins/gtkui/deadbeef.glade.h:41 -msgid "Even row" -msgstr "" - -#: ../plugins/gtkui/interface.c:2235 ../plugins/gtkui/deadbeef.glade.h:81 -msgid "Odd row" -msgstr "" - -#: ../plugins/gtkui/interface.c:2261 ../plugins/gtkui/deadbeef.glade.h:115 -msgid "Selected row" -msgstr "" - -#: ../plugins/gtkui/interface.c:2280 ../plugins/gtkui/deadbeef.glade.h:116 -msgid "Selected text" -msgstr "" - -#: ../plugins/gtkui/interface.c:2293 ../plugins/gtkui/deadbeef.glade.h:25 -msgid "Cursor" -msgstr "" - -#: ../plugins/gtkui/interface.c:2306 ../plugins/gtkui/deadbeef.glade.h:91 -msgid "Playlist colors" -msgstr "" - -#: ../plugins/gtkui/interface.c:2310 ../plugins/gtkui/deadbeef.glade.h:20 -msgid "Colors" -msgstr "" - -#: ../plugins/gtkui/interface.c:2319 ../plugins/gtkui/deadbeef.glade.h:38 -msgid "Enable Proxy Server" -msgstr "" - -#: ../plugins/gtkui/interface.c:2327 ../plugins/gtkui/deadbeef.glade.h:98 -msgid "Proxy Server Address:" -msgstr "" - -#: ../plugins/gtkui/interface.c:2341 ../plugins/gtkui/deadbeef.glade.h:99 -msgid "Proxy Server Port:" -msgstr "" - -#: ../plugins/gtkui/interface.c:2355 ../plugins/gtkui/deadbeef.glade.h:100 -msgid "Proxy Type:" -msgstr "" - -#: ../plugins/gtkui/interface.c:2374 ../plugins/gtkui/deadbeef.glade.h:101 -msgid "Proxy Username:" -msgstr "" - -#: ../plugins/gtkui/interface.c:2387 ../plugins/gtkui/deadbeef.glade.h:97 -msgid "Proxy Password:" -msgstr "" - -#: ../plugins/gtkui/interface.c:2397 ../plugins/gtkui/deadbeef.glade.h:78 -msgid "Network" -msgstr "" - -#: ../plugins/gtkui/interface.c:2428 ../plugins/gtkui/deadbeef.glade.h:143 -msgid "Version: " -msgstr "" - -#: ../plugins/gtkui/interface.c:2492 ../plugins/gtkui/deadbeef.glade.h:23 -#: ../translation/extra.c:78 -msgid "Copyright" -msgstr "" - -#: ../plugins/gtkui/interface.c:2502 ../plugins/gtkui/deadbeef.glade.h:93 -msgid "Plugins" -msgstr "" - -#: ../plugins/gtkui/interface.c:2981 ../plugins/gtkui/deadbeef.glade.h:141 -msgid "URL:" -msgstr "" - -#: ../plugins/gtkui/interface.c:3083 ../plugins/gtkui/deadbeef.glade.h:47 -msgid "Group By" -msgstr "" - -#: ../plugins/gtkui/interface.c:3207 ../plugins/gtkui/deadbeef.glade.h:122 -msgid "Sort by..." -msgstr "" - -#: ../plugins/gtkui/interface.c:3223 ../plugins/gtkui/deadbeef.glade.h:43 -msgid "Format" -msgstr "" - -#: ../plugins/gtkui/interface.c:3253 -msgid "Ascending" -msgstr "" - -#: ../plugins/gtkui/interface.c:3254 -msgid "Descending" -msgstr "" - -#: ../plugins/gtkui/interface.c:3307 ../plugins/gtkui/deadbeef.glade.h:113 -#: ../plugins/converter/interface.c:758 -msgid "Select DSP Plugin" -msgstr "" - -#: ../plugins/gtkui/interface.c:3323 ../plugins/gtkui/deadbeef.glade.h:92 -#: ../plugins/converter/convgui.c:1016 ../plugins/converter/interface.c:774 -#: ../plugins/gtkui/dspconfig.c:139 -msgid "Plugin" -msgstr "" - -#: ../plugins/gtkui/interface.c:3409 ../plugins/gtkui/deadbeef.glade.h:132 -msgid "Tag Writer Settings" -msgstr "" - -#: ../plugins/gtkui/interface.c:3440 ../plugins/gtkui/deadbeef.glade.h:146 -msgid "Write ID3v2" -msgstr "" - -#: ../plugins/gtkui/interface.c:3444 ../plugins/gtkui/interface.c:3571 -#: ../plugins/gtkui/deadbeef.glade.h:145 -msgid "Write ID3v1" -msgstr "" - -#: ../plugins/gtkui/interface.c:3448 ../plugins/gtkui/interface.c:3527 -#: ../plugins/gtkui/interface.c:3567 ../plugins/gtkui/deadbeef.glade.h:144 -msgid "Write APEv2" -msgstr "" - -#: ../plugins/gtkui/interface.c:3456 ../plugins/gtkui/interface.c:3535 -#: ../plugins/gtkui/deadbeef.glade.h:129 -msgid "Strip ID3v2" -msgstr "" - -#: ../plugins/gtkui/interface.c:3460 ../plugins/gtkui/interface.c:3583 -#: ../plugins/gtkui/deadbeef.glade.h:128 -msgid "Strip ID3v1" -msgstr "" - -#: ../plugins/gtkui/interface.c:3464 ../plugins/gtkui/interface.c:3539 -#: ../plugins/gtkui/interface.c:3579 ../plugins/gtkui/deadbeef.glade.h:127 -msgid "Strip APEv2" -msgstr "" - -#: ../plugins/gtkui/interface.c:3472 ../plugins/gtkui/deadbeef.glade.h:52 -msgid "ID3v2 version" -msgstr "" - -#: ../plugins/gtkui/interface.c:3479 -msgid "2.3 (Recommended)" -msgstr "" - -#: ../plugins/gtkui/interface.c:3480 -msgid "2.4" -msgstr "" - -#: ../plugins/gtkui/interface.c:3486 ../plugins/gtkui/deadbeef.glade.h:51 -msgid "ID3v1 character encoding (default is iso8859-1)" -msgstr "" - -#: ../plugins/gtkui/interface.c:3523 ../plugins/gtkui/deadbeef.glade.h:147 -msgid "Write ID3v2.4" -msgstr "" - -#: ../plugins/gtkui/mainplaylist.c:313 ../plugins/gtkui/search.c:391 -msgid "Artist / Album" -msgstr "" - -#: ../plugins/gtkui/mainplaylist.c:314 ../plugins/gtkui/search.c:392 -msgid "Track No" -msgstr "" - -#: ../plugins/gtkui/plcommon.c:325 -msgid "Delete files from disk" -msgstr "" - -#: ../plugins/gtkui/plcommon.c:326 -msgid "" -"Files will be lost. Proceed?\n" -"(This dialog can be turned off in GTKUI plugin settings)" -msgstr "" - -#: ../plugins/gtkui/plcommon.c:327 ../plugins/gtkui/trkproperties.c:162 -#: ../plugins/gtkui/trkproperties.c:693 ../plugins/converter/convgui.c:759 -#: ../plugins/converter/convgui.c:1136 -msgid "Warning" -msgstr "" - -#: ../plugins/gtkui/plcommon.c:429 -msgid "Add to playback queue" -msgstr "" - -#: ../plugins/gtkui/plcommon.c:434 -msgid "Remove from playback queue" -msgstr "" - -#: ../plugins/gtkui/plcommon.c:442 -msgid "Reload metadata" -msgstr "" - -#: ../plugins/gtkui/plcommon.c:461 -msgid "Remove from disk" -msgstr "" - -#: ../plugins/gtkui/plcommon.c:840 ../plugins/gtkui/plcommon.c:965 -msgid "Add column" -msgstr "" - -#: ../plugins/gtkui/plcommon.c:870 ../plugins/gtkui/plcommon.c:969 -msgid "Edit column" -msgstr "" - -#: ../plugins/gtkui/plcommon.c:973 -msgid "Remove column" -msgstr "" - -#: ../plugins/gtkui/plcommon.c:983 -msgid "Group by" -msgstr "" - -#: ../plugins/gtkui/plcommon.c:990 -msgid "None" -msgstr "" - -#: ../plugins/gtkui/plcommon.c:994 -msgid "Artist/Date/Album" -msgstr "" - -#: ../plugins/gtkui/pluginconf.c:42 -msgid "Open file..." -msgstr "" - -#: ../plugins/gtkui/pluginconf.c:217 -#, c-format -msgid "Configure %s" -msgstr "" - -#: ../plugins/gtkui/prefwin.c:82 -msgid "Default Audio Device" -msgstr "" - -#: ../plugins/gtkui/prefwin.c:318 ../plugins/converter/interface.c:649 -msgid "Add" -msgstr "" - -#: ../plugins/gtkui/prefwin.c:328 -msgid "Global Hotkeys" -msgstr "" - -#: ../plugins/gtkui/prefwin.c:390 -msgid "Slot" -msgstr "" - -#: ../plugins/gtkui/prefwin.c:391 -msgid "Key combination" -msgstr "" - -#: ../plugins/gtkui/progress.c:56 -msgid "Adding files..." -msgstr "" - -#: ../plugins/gtkui/progress.c:90 -msgid "Initializing..." -msgstr "" - -#: ../plugins/gtkui/trkproperties.c:159 -msgid "You've modified data for this track." -msgstr "" - -#: ../plugins/gtkui/trkproperties.c:161 -msgid "Really close the window?" -msgstr "" - -#. get value to edit -#: ../plugins/gtkui/trkproperties.c:254 -msgid "[Multiple values] " -msgstr "" - -#: ../plugins/gtkui/trkproperties.c:407 ../plugins/gtkui/trkproperties.c:419 -msgid "Key" -msgstr "" - -#: ../plugins/gtkui/trkproperties.c:408 ../plugins/gtkui/trkproperties.c:420 -msgid "Value" -msgstr "" - -#: ../plugins/gtkui/trkproperties.c:594 -msgid "Writing tags..." -msgstr "" - -#: ../plugins/gtkui/trkproperties.c:621 -msgid "Name:" -msgstr "" - -#: ../plugins/gtkui/trkproperties.c:633 -msgid "Field names must not start with : or _" -msgstr "" - -#: ../plugins/gtkui/trkproperties.c:634 ../plugins/gtkui/trkproperties.c:668 -msgid "Cannot add field" -msgstr "" - -#: ../plugins/gtkui/trkproperties.c:667 -msgid "Field with such name already exists, please try different name." -msgstr "" - -#: ../plugins/gtkui/trkproperties.c:692 -msgid "Really remove selected field?" -msgstr "" - -#: ../plugins/gtkui/trkproperties.c:734 -msgid "Add field" -msgstr "" - -#: ../plugins/gtkui/trkproperties.c:737 -msgid "Remove field" -msgstr "" - -#: ../main.c:90 -#, c-format -msgid "Usage: deadbeef [options] [file(s)]\n" -msgstr "" - -#: ../main.c:91 -#, c-format -msgid "Options:\n" -msgstr "" - -#: ../main.c:92 -#, c-format -msgid " --help or -h Print help (this message) and exit\n" -msgstr "" - -#: ../main.c:93 -#, c-format -msgid " --quit Quit player\n" -msgstr "" - -#: ../main.c:94 -#, c-format -msgid " --version Print version info and exit\n" -msgstr "" - -#: ../main.c:95 -#, c-format -msgid " --play Start playback\n" -msgstr "" - -#: ../main.c:96 -#, c-format -msgid " --stop Stop playback\n" -msgstr "" - -#: ../main.c:97 -#, c-format -msgid " --pause Pause playback\n" -msgstr "" - -#: ../main.c:98 -#, c-format -msgid " --toggle-pause Toggle pause\n" -msgstr "" - -#: ../main.c:99 -#, c-format -msgid "" -" --play-pause Start playback if stopped, toggle pause otherwise\n" -msgstr "" - -#: ../main.c:100 -#, c-format -msgid " --next Next song in playlist\n" -msgstr "" - -#: ../main.c:101 -#, c-format -msgid " --prev Previous song in playlist\n" -msgstr "" - -#: ../main.c:102 -#, c-format -msgid " --random Random song in playlist\n" -msgstr "" - -#: ../main.c:103 -#, c-format -msgid " --queue Append file(s) to existing playlist\n" -msgstr "" - -#: ../main.c:104 -#, c-format -msgid " --nowplaying FMT Print formatted track name to stdout\n" -msgstr "" - -#: ../main.c:105 -#, c-format -msgid "" -" FMT %%-syntax: [a]rtist, [t]itle, al[b]um,\n" -" [l]ength, track[n]umber, [y]ear, [c]omment,\n" -" copy[r]ight, [e]lapsed\n" -msgstr "" - -#: ../main.c:108 -#, c-format -msgid "" -" e.g.: --nowplaying \"%%a - %%t\" should print \"artist " -"- title\"\n" -msgstr "" - -#: ../main.c:109 -#, c-format -msgid "" -" for more info, see http://sourceforge.net/apps/" -"mediawiki/deadbeef/index.php?title=Title_Formatting\n" -msgstr "" - -#: ../playlist.c:443 ../playlist.c:2609 -msgid "Default" -msgstr "" - -#: ../playlist.c:3858 -msgid "Yes" -msgstr "" - -#: ../playlist.c:3858 -msgid "No" -msgstr "" - -#: ../plugins/gtkui/deadbeef.glade.h:3 -msgid "" -"2.3 (Recommended)\n" -"2.4" -msgstr "" - -#: ../plugins/gtkui/deadbeef.glade.h:14 -msgid "" -"Ascending\n" -"Descending" -msgstr "" - -#: ../plugins/gtkui/deadbeef.glade.h:33 -msgid "" -"Disable\n" -"Track\n" -"Album" -msgstr "" - -#: ../plugins/gtkui/deadbeef.glade.h:55 -msgid "" -"Item Index\n" -"Playing\n" -"Album Art\n" -"Artist - Album\n" -"Artist\n" -"Album\n" -"Title\n" -"Duration\n" -"Track Number\n" -"Band / Album Artist\n" -"Custom" -msgstr "" - -#: ../plugins/gtkui/deadbeef.glade.h:67 -msgid "" -"Left\n" -"Right" -msgstr "" - -#: ../plugins/gtkui/support.c:90 ../plugins/gtkui/support.c:114 -#: ../plugins/converter/support.c:90 ../plugins/converter/support.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "" - -#: ../plugins/wildmidi/wildmidiplug.c:162 -#, c-format -msgid "" -"wildmidi: freepats config file not found. Please install timidity-freepats " -"package, or specify path to freepats.cfg in the plugin settings." -msgstr "" - -#. this file should list extra translatable strings that are not referenced -#. directly in source code, e.g. scripted plugin configuration strings -#: ../translation/extra.c:3 -msgid "Add Audio CD" -msgstr "" - -#: ../translation/extra.c:4 -msgid "Lookup on Last.fm" -msgstr "" - -#. ALSA output plugin -#: ../translation/extra.c:6 -msgid "Use ALSA resampling" -msgstr "" - -#: ../translation/extra.c:7 -msgid "Release device while stopped" -msgstr "" - -#: ../translation/extra.c:8 ../translation/extra.c:51 -msgid "Preferred buffer size" -msgstr "" - -#: ../translation/extra.c:9 -msgid "Preferred period size" -msgstr "" - -#. Last.fm plugin -#: ../translation/extra.c:11 -msgid "Enable scrobbler" -msgstr "" - -#: ../translation/extra.c:12 -msgid "Disable nowplaying" -msgstr "" - -#: ../translation/extra.c:13 -msgid "Username" -msgstr "" - -#: ../translation/extra.c:14 -msgid "Password" -msgstr "" - -#: ../translation/extra.c:15 -msgid "Scrobble URL" -msgstr "" - -#. OSS output plugin -#: ../translation/extra.c:17 -msgid "Device file" -msgstr "" - -#: ../translation/extra.c:18 -msgid "OSS4 samplerate bug workaround" -msgstr "" - -#. Album Artwork plugin -#: ../translation/extra.c:20 -msgid "Cache update period (hr)" -msgstr "" - -#: ../translation/extra.c:21 -msgid "Fetch from embedded tags" -msgstr "" - -#: ../translation/extra.c:22 -msgid "Fetch from local folder" -msgstr "" - -#: ../translation/extra.c:23 -msgid "Local cover file mask" -msgstr "" - -#: ../translation/extra.c:24 -msgid "Fetch from last.fm" -msgstr "" - -#: ../translation/extra.c:25 -msgid "Fetch from albumart.org" -msgstr "" - -#: ../translation/extra.c:26 -msgid "Scale artwork towards longer side" -msgstr "" - -#. Audio CD player -#: ../translation/extra.c:28 -msgid "Use CDDB/FreeDB" -msgstr "" - -#: ../translation/extra.c:29 -msgid "Prefer CD-Text over CDDB" -msgstr "" - -#: ../translation/extra.c:30 -msgid "CDDB url (e.g. 'freedb.org')" -msgstr "" - -#: ../translation/extra.c:31 -msgid "CDDB port number (e.g. '888')" -msgstr "" - -#: ../translation/extra.c:32 -msgid "Prefer CDDB protocol over HTTP" -msgstr "" - -#: ../translation/extra.c:33 -msgid "Enable NRG image support" -msgstr "" - -#. DUMB module player plugin -#: ../translation/extra.c:35 -msgid "Resampling quality (0..2, higher is better)" -msgstr "" - -#. Game_Music_Emu decoder plugin -#: ../translation/extra.c:37 -msgid "Max song length (in minutes)" -msgstr "" - -#. Standard GTK2 user interface plugin -#: ../translation/extra.c:39 -msgid "Ask confirmation to delete files from disk" -msgstr "" - -#: ../translation/extra.c:40 -msgid "Status icon volume control sensitivity" -msgstr "" - -#: ../translation/extra.c:41 -msgid "Custom status icon" -msgstr "" - -#: ../translation/extra.c:42 -msgid "Run gtk_init with --sync (debug mode)" -msgstr "" - -#: ../translation/extra.c:43 -msgid "Add separators between plugin context menu items" -msgstr "" - -#. OSD Notify plugin -#: ../translation/extra.c:45 -msgid "Notification title format" -msgstr "" - -#: ../translation/extra.c:46 -msgid "Notification content format" -msgstr "" - -#: ../translation/extra.c:47 -msgid "Show album art" -msgstr "" - -#: ../translation/extra.c:48 -msgid "Album art size (px)" -msgstr "" - -#. PulseAudio output plugin -#: ../translation/extra.c:50 -msgid "PulseAudio server" -msgstr "" - -#: ../translation/extra.c:52 -msgid "Samplerate" -msgstr "" - -#. SHN player plugin -#: ../translation/extra.c:54 -msgid "Relative seek table path" -msgstr "" - -#: ../translation/extra.c:55 -msgid "Absolute seek table path" -msgstr "" - -#: ../translation/extra.c:56 -msgid "Swap audio bytes (toggle if all you hear is static)" -msgstr "" - -#. SID decoder plugin -#: ../translation/extra.c:58 -msgid "Enable HVSC Songlength DB" -msgstr "" - -#: ../translation/extra.c:59 -msgid "Songlengths.txt (from HVSC)" -msgstr "" - -#: ../translation/extra.c:60 -msgid "Bits per sample (8 or 16)" -msgstr "" - -#: ../translation/extra.c:61 -msgid "Default song length (sec)" -msgstr "" - -#. WildMidi player plugin -#: ../translation/extra.c:63 -msgid "Timidity++ bank configuration file" -msgstr "" - -#: ../translation/extra.c:66 -msgid "Track Title" -msgstr "" - -#: ../translation/extra.c:67 -msgid "Performer" -msgstr "" - -#: ../translation/extra.c:72 -msgid "Total Tracks" -msgstr "" - -#: ../translation/extra.c:73 -msgid "Genre" -msgstr "" - -#: ../translation/extra.c:74 -msgid "Composer" -msgstr "" - -#: ../translation/extra.c:75 -msgid "Disc Number" -msgstr "" - -#: ../translation/extra.c:76 -msgid "Comment" -msgstr "" - -#: ../translation/extra.c:77 -msgid "Encoder / Vendor" -msgstr "" - -#: ../translation/extra.c:79 -msgid "Location" -msgstr "" - -#: ../translation/extra.c:80 -msgid "Subtrack Index" -msgstr "" - -#: ../translation/extra.c:81 -msgid "Tag Type(s)" -msgstr "" - -#: ../translation/extra.c:82 -msgid "Embedded Cuesheet" -msgstr "" - -#: ../translation/extra.c:83 -msgid "Codec" -msgstr "" - -#. FFmpeg deocder plugin -#: ../translation/extra.c:85 -msgid "File Extensions (separate with ';')" -msgstr "" - -#. Converter GUI -#: ../translation/extra.c:87 -msgid "Convert" -msgstr "" - -#. Resampler (Secret Rabbit Code) -#: ../translation/extra.c:89 -msgid "Target Samplerate" -msgstr "" - -#: ../translation/extra.c:90 -msgid "Quality / Algorythm" -msgstr "" - -#: ../translation/extra.c:91 -msgid "Automatic Samplerate (overrides Target Samplerate)" -msgstr "" - -#: ../plugins/converter/convgui.c:108 -msgid "The file already exists. Overwrite?" -msgstr "" - -#: ../plugins/converter/convgui.c:110 -msgid "Converter warning" -msgstr "" - -#: ../plugins/converter/convgui.c:222 -msgid "Please select encoder" -msgstr "" - -#: ../plugins/converter/convgui.c:224 -msgid "Converter error" -msgstr "" - -#: ../plugins/converter/convgui.c:248 -msgid "Converting..." -msgstr "" - -#: ../plugins/converter/convgui.c:394 ../plugins/converter/convgui.c:496 -msgid "Select folder..." -msgstr "" - -#: ../plugins/converter/convgui.c:635 -msgid "Failed to save encoder preset" -msgstr "" - -#: ../plugins/converter/convgui.c:637 ../plugins/converter/convgui.c:1035 -msgid "" -"Check preset folder permissions, try to pick different title, or free up " -"some disk space" -msgstr "" - -#: ../plugins/converter/convgui.c:637 ../plugins/converter/convgui.c:1035 -msgid "Preset with the same name already exists. Try to pick another title." -msgstr "" - -#: ../plugins/converter/convgui.c:638 ../plugins/converter/convgui.c:1036 -msgid "Error" -msgstr "" - -#: ../plugins/converter/convgui.c:692 -msgid "Add new encoder" -msgstr "" - -#: ../plugins/converter/convgui.c:724 -msgid "Edit encoder" -msgstr "" - -#: ../plugins/converter/convgui.c:756 ../plugins/converter/convgui.c:1133 -msgid "Remove preset" -msgstr "" - -#: ../plugins/converter/convgui.c:758 ../plugins/converter/convgui.c:1135 -msgid "This action will delete the selected preset. Are you sure?" -msgstr "" - -#: ../plugins/converter/convgui.c:782 -msgid "Encoders" -msgstr "" - -#: ../plugins/converter/convgui.c:838 ../plugins/gtkui/dspconfig.c:183 -msgid "Add plugin to DSP chain" -msgstr "" - -#: ../plugins/converter/convgui.c:1034 -msgid "Failed to save DSP preset" -msgstr "" - -#: ../plugins/converter/convgui.c:1098 -msgid "New DSP Preset" -msgstr "" - -#: ../plugins/converter/convgui.c:1183 -msgid "Edit DSP Preset" -msgstr "" - -#: ../plugins/converter/convgui.c:1203 -msgid "DSP Presets" -msgstr "" - -#: ../plugins/converter/interface.c:97 -msgid "Output folder:" -msgstr "" - -#: ../plugins/converter/interface.c:118 -msgid "Output file name:" -msgstr "" - -#: ../plugins/converter/interface.c:129 -msgid "" -"Extension (e.g. .mp3) will be appended automatically.\n" -"Leave the field empty for default (%a - %t)." -msgstr "" - -#: ../plugins/converter/interface.c:142 -msgid "Encoder:" -msgstr "" - -#: ../plugins/converter/interface.c:166 -msgid "DSP preset:" -msgstr "" - -#: ../plugins/converter/interface.c:189 -msgid "Number of threads:" -msgstr "" - -#: ../plugins/converter/interface.c:202 -msgid "Output sample format:" -msgstr "" - -#: ../plugins/converter/interface.c:209 -msgid "Keep source format" -msgstr "" - -#: ../plugins/converter/interface.c:210 -msgid "8 bit signed int" -msgstr "" - -#: ../plugins/converter/interface.c:211 -msgid "16 bit signed int" -msgstr "" - -#: ../plugins/converter/interface.c:212 -msgid "24 bit signed int" -msgstr "" - -#: ../plugins/converter/interface.c:213 -msgid "32 bit signed int" -msgstr "" - -#: ../plugins/converter/interface.c:214 -msgid "32 bit float" -msgstr "" - -#: ../plugins/converter/interface.c:220 -msgid "When file exists:" -msgstr "" - -#: ../plugins/converter/interface.c:227 -msgid "Prompt" -msgstr "" - -#: ../plugins/converter/interface.c:228 -msgid "Overwrite" -msgstr "" - -#: ../plugins/converter/interface.c:230 -msgid "Preserve folder structure, starting from:" -msgstr "" - -#: ../plugins/converter/interface.c:386 -msgid "Edit Encoder Preset" -msgstr "" - -#: ../plugins/converter/interface.c:409 -msgid "Untitled Encoder" -msgstr "" - -#: ../plugins/converter/interface.c:417 -msgid "Output file extension:" -msgstr "" - -#: ../plugins/converter/interface.c:424 -msgid "E.g. mp3" -msgstr "" - -#: ../plugins/converter/interface.c:432 -msgid "Command line:" -msgstr "" - -#: ../plugins/converter/interface.c:443 -#, c-format -msgid "" -"Example: lame - %o\n" -"%i for input file, %o for output file, - for stdin" -msgstr "" - -#: ../plugins/converter/interface.c:453 -#, c-format -msgid "" -"<small>%o - output file name\n" -"%i - temporary input file name</small>" -msgstr "" - -#: ../plugins/converter/interface.c:462 -msgid "Method:" -msgstr "" - -#: ../plugins/converter/interface.c:469 -msgid "Pipe" -msgstr "" - -#: ../plugins/converter/interface.c:470 -msgid "Temporary file" -msgstr "" - -#: ../plugins/converter/interface.c:487 -msgid "APEv2" -msgstr "" - -#: ../plugins/converter/interface.c:493 -msgid "ID3v1" -msgstr "" - -#: ../plugins/converter/interface.c:499 -msgid "OggVorbis" -msgstr "" - -#: ../plugins/converter/interface.c:505 -msgid "FLAC" -msgstr "" - -#: ../plugins/converter/interface.c:517 -msgid "ID3v2" -msgstr "" - -#: ../plugins/converter/interface.c:527 -msgid "<b>Tag writer</b>" -msgstr "" - -#: ../plugins/converter/interface.c:614 -msgid "DSP Preset Editor" -msgstr "" - -#: ../plugins/converter/interface.c:637 -msgid "Untitled DSP Preset" -msgstr "" diff --git a/yasmwrapper.sh b/yasmwrapper.sh new file mode 100755 index 00000000..1d0170f1 --- /dev/null +++ b/yasmwrapper.sh @@ -0,0 +1,10 @@ +#!/bin/bash +ARGS="" +for i in $@ ; do + #if [ "$i" != "-fPIC" ] && [ "$i" != "-DPIC" ]; then + if [ "$i" != "-fPIC" ]; then + ARGS="$ARGS $i" + fi +done +echo "exec: yasm $ARGS" +yasm $ARGS |